Friday, October 23, 2015

Linux - Schedule Tasks Using Crontab

Schedule Tasks on Linux Using Crontab

If you've got a website that's heavy on your web server, you might want to run some processes like generating thumbnails or enriching data in the background. This way it can not interfere with the user interface. Linux has a great program for this called cron. It allows tasks to be automatically run in the background at regular intervals. You could also use it to automatically create backups, synchronize files, schedule updates, and much more. Welcome to the wonderful world of crontab.

 

Crontab

The crontab (cron derives from chronos, Greek for time; tab stands fortable) command, found in Unix and Unix-like operating systems, is used to schedule commands to be executed periodically. To see what crontabs are currently running on your system, you can open a terminal and run:

$ sudo crontab -l

To edit the list of cronjobs you can run:

$ sudo crontab -e

This wil open a the default editor (could be vi or pico, if you want you canchange the default editor) to let us manipulate the crontab. If you save and exit the editor, all your cronjobs are saved into crontab. Cronjobs are written in the following format:

* * * * * /bin/execute/this/script.sh

 

Scheduling explained

As you can see there are 5 stars. The stars represent different date parts in the following order:

  • minute (from 0 to 59)
  • hour (from 0 to 23)
  • day of month (from 1 to 31)
  • month (from 1 to 12)
  • day of week (from 0 to 6) (0=Sunday)

 

Execute every minute

If you leave the star, or asterisk, it means every. Maybe that's a bit unclear. Let's use the the previous example again:

* * * * * /bin/execute/this/script.sh

They are all still asterisks! So this means execute /bin/execute/this/script.sh:

  • every minute
  • of every hour
  • of every day of the month
  • of every month
  • and every day in the week.

In short: This script is being executed every minute. Without exception.

 

Execute every Friday 1AM

So if we want to schedule the script to run at 1AM every Friday, we would need the following cronjob:

0 1 * * 5 /bin/execute/this/script.sh

Get it? The script is now being executed when the system clock hits:

  • minute: 0
  • of hour: 1
  • of day of month: * (every day of month)
  • of month: * (every month)
  • and weekday: 5 (=Friday)

 

Execute on workdays 1AM

So if we want to schedule the script to Monday till Friday at 1 AM, we would need the following cronjob:

0 1 * * 1-5 /bin/execute/this/script.sh

Get it? The script is now being executed when the system clock hits:

  • minute: 0
  • of hour: 1
  • of day of month: * (every day of month)
  • of month: * (every month)
  • and weekday: 1-5 (=Monday til Friday)

 

Execute 10 past after every hour on the 1st of every month

Here's another one, just for practicing

10 * 1 * * /bin/execute/this/script.sh

Fair enough, it takes some getting used to, but it offers great flexibility.

 

Neat scheduling tricks

What if you'd want to run something every 10 minutes? Well you could do this:

0,10,20,30,40,50 * * * * /bin/execute/this/script.sh

But crontab allows you to do this as well:

*/10 * * * * /bin/execute/this/script.sh

Which will do exactly the same. Can you do the the math? ; )

 

Special words

For the first (minute) field, you can also put in a keyword instead of a number:

  • @reboot Run once, at startup
  • @yearly Run once a year "0 0 1 1 *"
  • @annually (same as @yearly)
  • @monthly Run once a month "0 0 1 * *"
  • @weekly Run once a week "0 0 * * 0"
  • @daily Run once a day "0 0 * * *"
  • @midnight (same as @daily)
  • @hourly Run once an hour "0 * * * *"

Leaving the rest of the fields empty, this would be valid:

@daily /bin/execute/this/script.sh

 

Storing the crontab output

By default cron saves the output of /bin/execute/this/script.sh in the user's mailbox (root in this case). But it's prettier if the output is saved in a separate logfile. Here's how:

*/10 * * * * /bin/execute/this/script.sh >> /var/log/script_output.log 2>&1

 

Explained

Linux can report on different levels. There's standard output (STDOUT) and standard errors (STDERR). STDOUT is marked 1, STDERR is marked 2. So the following statement tells Linux to store STDERR in STDOUT as well, creating one datastream for messages & errors:

2>&1

Now that we have 1 output stream, we can pour it into a file. Where >will overwrite the file, >> will append to the file. In this case we'd like to to append:

>> /var/log/script_output.log

 

Mailing the crontab output

By default cron saves the output in the user's mailbox (root in this case) on the local system. But you can also configure crontab to forward all output to a real email address by starting your crontab with the following line:

MAILTO="yourname@yourdomain.com"

 

Mailing the crontab output of just one cronjob

If you'd rather receive only one cronjob's output in your mail, make sure this package is installed:

$ aptitude install mailx

And change the cronjob like this:

*/10 * * * * /bin/execute/this/script.sh 2>&1 | mail -s "Cronjob ouput" yourname@yourdomain.com

 

Trashing the crontab output

Now that's easy:

*/10 * * * * /bin/execute/this/script.sh > /dev/null 2>&1

Just pipe all the output to the null device, also known as the black hole. On Unix-like operating systems, /dev/null is a special file that discards all data written to it.

 

Caveats

Many scripts are tested in a BASH environment with the PATH variable set. This way it's possible your scripts work in your shell, but when run from cron (where the PATH variable is different), the script cannot find referenced executables, and fails.

It's not the job of the script to set PATH, it's the responsibility of the caller, so it can help to echo $PATH, and put PATH=<the result> at the top of your cron files (right below MAILTO).

Taken From: http://kvz.io/blog/2007/07/29/schedule-tasks-on-linux-using-crontab/

Sunday, October 18, 2015

Cisco - Dual WAN Internet with Failover (NAT & Routes)

In the past I had the need to implement failover between two connections to the Internet on the same router, at the time I implemented it using EEM Scripts which wasn’t the most elegant solution, so here I’m going to show you a  a better solution to do this.

Implementing the failover mechanism at first glance seems easier with one router than with two, but that is not the case, with two routers you can have them configured normally with the adition of VRRP/HSRP to do the failover between the routers.

With only one router you are going to have two aditional problems:

  • Changing the route from the primary to the secondary Internet access
  • Changing the NAT overload to the Interface towards the Secondary ISP / WAN (this was the part that I implemented with EEM scripts)

the first you can easily solve with a floating static route (secondary route) and a track / ip sla (to remove the primary route when the connectivity to the primary ISP is lost).

The second one is harder, you can have two NAT rules with two interfaces towards the two ISPs:

ip nat inside source 130 interface FastEthernet0/0 overload
ip nat inside source 131 interface FastEthernet1/0 overload

but selecting the one as the active one is the tricky part.

Even if the interface towards the primary ISP were to fail and become shutdown, the NAT rule remains active.

The cenario bellow has two different ISPs for for the WAN accesses, but its the sames as having two different connectivities via the same ISP (eg. Primary via Fiber Optic | Secondary via 4G)

Cenario

Logical View

TOP17

Fisical View

TOP18

You can download the lab fully implemented here:

it was implemented on GNS3 v1.2.1.

 

Configuration

 

PC1
====================================================

enable
conf t

hostname PC1

interface FastEthernet0/0
description *** Link to CPE1 ***
ip address 192.168.1.1 255.255.255.0
no shutdown

ip route 0.0.0.0 0.0.0.0 192.168.1.254 name DefaultGW
 
do write
 
 
CPE1
====================================================

enable
conf t

hostname CPE1

interface FastEthernet0/0
description *** Link to ISP1 ***
ip address 11.0.0.2 255.255.255.252
ip nat outside
no shutdown
 
interface FastEthernet0/1
description *** Link to ISP2 ***
ip address 22.0.0.2 255.255.255.252
ip nat outside
no shutdown
 
interface FastEthernet1/0
no switchport
description *** Link to PC1 ***
ip address 192.168.1.254 255.255.255.0
ip nat inside
no shutdown

 
!-- Select the Route - via ISP1 or ISP2 -------------------
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! The first route makes all the traffic flow via
! ISP1, but this is conditioned to track 10, that
! detects the  connectivity to ISP1.
! If track 10 fails the route is removed from the
! routing table.
!
!
! The second route has an higher administrative
! distance (worst), and as long as the first rule
! is available this rule is never inserted on
! the routing table (aka floating static route)
!
! If the first route disapears because the track
! failed then the second route is inserted in the
! routing table, and all traffic will flow via ISP2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

ip route 0.0.0.0 0.0.0.0 11.0.0.1 track 10 name Default-Primary
ip route 0.0.0.0 0.0.0.0 22.0.0.1 250 name Default-Secondary

ip sla 10
icmp-echo 11.0.0.1 source-interface FastEthernet0/0
frequency 5
ip sla schedule 10 life forever start-time now

track 10 ip sla 10 reachability
!show track brief
!show track 10


!-- Change the NAT Interface to Reflect the Active Route --
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Changing the routes isn't enough, we also
! need to change the NAT rule, because each route
! implies a different exit interface.
!
! To select which NAT rule will be used for each
! route, we used route maps instead of an ACL
! to identify traffic (active the rule).
!
! These route maps match the LAN traffic, plus
! the current next hop to forward the traffic thus
! selecting the correct NAT rule for the current
! active route.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

ip nat inside source route-map RM-ISP1-PRIMARY interface FastEthernet0/0 overload
ip nat inside source route-map RM-ISP2-PRIMARY interface FastEthernet0/1 overload


access-list 130 remark *** Traffic for The Internet (NAT) ***
access-list 130 permit ip 192.168.1.0 0.0.0.255 any

route-map RM-ISP1-PRIMARY permit 10
match ip address 130
match interface FastEthernet0/0        !--> Match the exit interface of the route

route-map RM-ISP2-PRIMARY permit 10
match ip address 130
match interface FastEthernet0/1        !--> Match the exit interface of the route
!show route-map


!-- Simulate a Failure Along The Way ----------------------
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! To simulate the failure to see the topology
! changing to the secondary access, we are going
! to use a route to force the track/ip sla to fail.
!
! This route will force all the connectivity test
! traffic destined for ISP1(11.0.0.1) to go to NULL
! which is a black hole. Like this ISP1 will never
! get the icmp echos requests from the ip sla test
! or respond to it, thus simulating a connectivity
! failure towards ISP1
!
! NOTE: It takes a couple of seconds to change
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!-- Failure Sim + Debug/Tshoot --
do debug ip nat
ping 77.0.0.1
show ip route
!S*    0.0.0.0/0 [1/0] via 11.0.0.1

ip route 11.0.0.1 255.255.255.255 NULL0 name FailureSim

ping 77.0.0.1
show ip route
!S*    0.0.0.0/0 [250/0] via 22.0.0.1

! Both Pings will work but notice that the default
! route is diferent (diferent next hop)


!-- Restore to Normal Operation --
no ip route 11.0.0.1 255.255.255.255 NULL0 name FailureSim
do no debug all


ISP1-PRIMARY
====================================================

enable
conf t

hostname ISP1-PRIMARY

interface FastEthernet0/0
description *** Link to CPE1 ***
ip address 11.0.0.1 255.255.255.252
no shutdown

interface FastEthernet0/1
description *** Link to CPE2 ***
ip address 11.0.0.5 255.255.255.252
no shutdown
 
 
interface FastEthernet1/0
no switchport
description *** Link to ISP2 ***
ip address 22.0.0.6 255.255.255.252
no shutdown

    
ip route 77.0.0.0 255.255.255.248 11.0.0.6 name PublicIPs
ip route 22.0.0.0 255.255.255.252 22.0.0.5 name NatedLAN-viaIPS2

do write


ISP2-SECONDARY
====================================================

enable
conf t

hostname ISP2-SECONDARY

interface FastEthernet0/1
description *** Link to CPE1 ***
ip address 22.0.0.1 255.255.255.252
no shutdown
 
interface FastEthernet0/0
description *** Link to ISP1 ***
ip address 22.0.0.5 255.255.255.252
no shutdown

ip route 0.0.0.0 0.0.0.0 22.0.0.6 name Default
 
do write
 
 
CPE2
====================================================

enable
conf t

hostname CPE2

interface FastEthernet0/1
description *** Link to ISP1 ***
ip address 11.0.0.6 255.255.255.248
no shutdown
 
interface FastEthernet1/0
description *** Link to Internet Server ***
no switchport
ip address 77.0.0.6 255.255.255.248

ip route 0.0.0.0 0.0.0.0 11.0.0.5 name Default

do write


INTERNET SERVER
====================================================

enable
conf t

hostname INTERNET-SERVER

interface FastEthernet0/0
description *** Link to CPE1 ***
ip address 77.0.0.1 255.255.255.248
no shutdown
 
ip route 0.0.0.0 0.0.0.0 77.0.0.6 name Default

do write



Related Links

Sunday, October 11, 2015

Linux/Raspberry - Send Emails (SMTP Setup - Gmail)

 

SMTP Mail Setup

Many times you want to have the ability to send email from processes on your Raspberry Pi to email addresses out on the network. Adding email to your Raspberry Pi is pretty simple. You can use the following three packages for some simple mail capabilities.

It is assumed that you have networking working already...

 

Loading the packages

sudo apt-get install ssmtp
sudo apt-get install mailutils
sudo apt-get install mpack

Setting up the defaults for SSMTP

sudo nano /etc/ssmtp/ssmtp.conf

Now edit the fields:

AuthUser=youruserid@gmail.com
AuthPass=userpass
FromLineOverride=YES
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES

Using Email Now

echo "sample text" | mail -s "Subject" username@domain.tld

Sending Attachments

mpack -s "test" /home/pi/test/somefile.ext username@domain.tld

Taken From:

Friday, October 9, 2015

How to Mount CD/DVDs Images - Windows, Mac, and Linux

Disc images have become more useful than ever on modern PCs that often lack CD and DVD drives. Create ISO files and other types of disc images and you can “mount” them, accessing the virtual discs as if they were physical discs inserted into your computer.

You can also use these image files to burn copies of the original discs later, creating duplicate copies. Disc image files contain a complete representation of a disc.

 

Windows

Windows 10 allows you to mount both .ISO and .IMG disc image files without any third-party software. Just double-click a .ISO or .IMG disc image you want to make available. If this doesn’t work, you should be able to click the “Disk Image Tools” tab on the ribbon and click “Mount.” It will appear under Computer as if it were inserted into a physical disc drive.

This feature was added back in Windows 8, so it will also work on Windows 8 and 8.1.

To unmount the disc later, right-click the virtual disc drive and select “Eject.” The disc will be unmounted and the virtual disc drive will disappear from the Computer window until you mount a disc in it again.

clip_image001

To mount ISO or IMG images on Windows 7 — or to mount images in other formats, such as BIN/CUE, NRG, MDS/MDF, or CCD — we recommend the free, open-source, and simple WinCDEmu utility.

Just right-click an image file after installing it, click “Select drive letter & mount,” and you can mount other types of images Windows doesn’t support.

Some other third-party utilities have additional support for emulating various copy-protection technologies, allowing copy-protected discs to function normally. However, such techniques are being phased out and aren’t even supported by modern versions of Windows.

clip_image002

 

Mac

On a Mac, double-clicking common disc image formats will mount them. This is why you can simply double-click a downloaded .DMG file to access its contents and install Mac applications, for example.

The DiskImageMounter application that handles this can also mount .ISO, .IMG, .CDR, and other types of image files. Just double-click the file to mount it. If this doesn’t work, Option-click or right-click a file, point to “Open With,” and select “DiskImageMounter.

When you’re done, just click the “Eject” button next to the mounted image in the Finder’s sidebar to eject it and unmount it — just like you’d unmount a .DMG image when you’re done with it.

clip_image003

You can also try mounting the disc image file by opening the Disk Utility application. Press Command+Space, type Disk Utility, and press Enter to open it. Click the “File” menu, select “Open Image,” and select the disc image you want to mount.

clip_image004

 

Linux

Ubuntu’s Unity desktop and GNOME include an “Archive Mounter” application that can mount ISO files and similar image files graphically. To use it, right-click an .ISO file or another type of disc image, point to Open With, and select “Disk Image Mounter.”

You can later unmount the image by clicking the eject icon next to the mounted image in the sidebar.

clip_image005

You can also mount an .ISO file or another disc image with a Linux terminal command. This is particularly useful if you’re just using the command line, or if you’re using a Linux desktop that doesn’t provide a tool to make this easy. (Of course, graphical tools for mounting ISO files and similar images may be available in your Linux distribution’s software repositories.)

To mount an ISO or IMG file on Linux, first open a Terminal window from your Linux desktop’s applications menu. First, type the following command to create the /mnt/image folder. You can create practically any folder you like — you just have to create a directory where you’ll mount the image. The contents of the disc image will be accessible at this location later.

sudo mkdir /mnt/image

Next, mount the image with the following command. Replace “/home/NAME/Downloads/image.iso” with the path to the ISO, IMG, or other type of disc image you want to mount.

sudo mount -o loop /home/NAME/Downloads/image.iso /mnt/image

To unmount the disc image later, just use the umount command:

sudo umount /mnt/image

clip_image006

Some guides recommend you add “-t iso9660” to the command. However, this isn’t actually helpful - it’s best to let the mount command automatically detect the required file system.

If you’re trying to mount a more obscure type of disc image format that the mount command can’t automatically detect and mount in this way, you may need commands or tools designed specifically for working with that type of image file format.

This should “just work” on most modern operating systems, allowing you to mount and use ISO images and other common types of image files in a few clicks. Windows 7 users will have the toughest time, as it isn’t integrated into that older version of Windows, but WinCDEmu is a lightweight and easy way to accomplish this.

Taken From:

Wednesday, September 30, 2015

Cisco - EEM Scripts Examples (TSHOOT)

EEM is a very useful tool to troubleshoot occasional, sporadic CPU spikes that are short-lived and difficult to troubleshoot manually with the command line interface. This is an example of CPU spikes:

Switch#show process cpu history
<snip>
    11111822511   11 111277711111 124111  11 1211111112161116
    143342171209994090111878458239607111981270283361362429475
100
90
80      *               ***
70      *               ***                                *
60      *               ***                            *   *
50      *  *            ***        *                   *   *
40      *  *            ***        *                   *   *
30      * **            ***        *                   *   *
20      ****           **** **   ***         **  *  ** ** **
10 *********************************************************
   0....5....1....1....2....2....3....3....4....4....5....5....6....6....7.
             0    5    0    5    0    5    0    5    0    5    0    5    0
                   CPU% per hour (last 72 hours)
                  * = maximum CPU%   # = average CPU%

This section includes several examples of the use of EEM scripts to monitor CPU utilization. Catalyst 2960 and 3750 switches allow EEM to use non-volatile RAM (NVRAM); Catalyst 4500 switches allow EEM to write to bootflash; and Catalyst 6500 switches allow EEM to use disk0 and sup-bootdisk.

Email Alerts

This script emails an alert when CPU utilization goes above 50 percent. The body of the email is the output of theshow process cpu sorted command.
event manager applet highcpu
  event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 get-type exact entry-op ge
entry-val 50 poll-interval 0.5
action 1.0 cli command "enable"
  action 2.0 cli command "show proc cpu sorted"
  action 3.0 mail server "192.168.1.1" to "user-to@domain.com" from "user-from@domain.com"
subject "High CPU Alert" body "$_cli_result"

The definitions of italicized variables are:

  • highcpu - name of the event manager applet/script
  • 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 - Object identifier (OID) for polling the total CPU utilization of the route processor (RP)
  • 50 - CPU utilization that triggers the script
    poll-interval 0.5 - Frequency (every 0.5 seconds) the script monitors the CPU
  • 192.169.1.1 - IP of the mail server

      Append Output to Local File

      This script appends required outputs to a file in the local file system. Replace file system with the appropriate file system on the switch.
      event manager scheduler script thread class default number 1 
      event manager applet High_CPU
      event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 get-type exact entry-op ge
      entry-val 50 poll-interval 0.5
      action 0.0 syslog msg "High CPU DETECTED. Please wait - logging Information
      to file system:high_cpu.txt"
      action 0.1 cli command "enable"
        action 0.2 cli command "show clock | append file system:high_cpu.txt"
        action 1.2 cli command "term length 0"
        action 1.3 cli command "show process cpu sorted | append file system:high_cpu.txt"
        action 1.4 cli command "show log | append file system:high_cpu.txt"
        action 1.5 cli command "show interfaces | append file system:high_cpu.txt"
        action 1.6 cli command "term length 24"

      Append Output to Local File and Remove Script

      This script appends the output of the show process cpu sorted command to a file in the local file system, then removes itself once completed. Replace file system with the appropriate file system on the switch.
      event manager scheduler script thread class default number 1 
      event manager applet High_CPU
      event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.3.1 get-type exact entry-op gt
      entry-val 50 poll-interval 0.5
      action 0.0 syslog msg "High CPU DETECTED. Please wait - logging Information
      to flash:high_cpu.txt"
        action 0.1 cli command "enable"
        action 0.2 cli command "term exec prompt timestamp"
        action 1.3 cli command "show process cpu sorted | append file system:high_cpu.txt"
        action 1.4 cli command "show process cpu sorted | append file system:high_cpu.txt"
        action 1.4 cli command "show process cpu sorted | append file system:high_cpu.txt"
        action 5.1 syslog msg "Finished logging information to file system:high_cpu.txt..."
        action 5.1 syslog msg "Self-removing applet from configuration..."
        action 5.2 cli command "term no exec prompt timestamp"
        action 9.1 cli command "configure terminal"
        action 9.2 cli command "no event manager applet High_CPU"
        action 9.3 cli command "end"

      Collect Output and Write to Local File

      This script uses a syslog-based trigger in order to run and collect required outputs and write those outputs to the local file system. Replace file system with the appropriate file system on the switch.
      process cpu threshold type total rising 70 interval 15 
      event manager applet DETECT_CPU
      event syslog pattern ".*SYS-1-CPURISINGTHRESHOLD.*"
      action 1 cli command "en"
      action 2 cli command "show clock | append file system:cpuinfo"
      action 3 cli command "show proc cpu sort | append file system:cpuinfo"
      action 4 cli command "show line | append file system:cpuinfo"

      Monitor CPU Utilization on Modular IOS

      The Cisco EEM can also be used to monitor CPU utilization on modular IOS. Because of the differences in how the CPU is monitored on modular IOS, you can use the Simple Network Management Protocol (SNMP) OID (1.3.6.1.4.1.9.9.109.1.1.1.1.3.1) in order to check CPU utilization by the IOS base process.

      This script uses the OID as a trigger and writes required outputs to the local file system. Replace file system with the appropriate file system on the switch.

      event manager scheduler script thread class default number 1
      event manager applet High_CPU
      event snmp oid 1.3.6.1.4.1.9.9.109.1.1.1.1.10.1  get-type exact entry-op ge
      entry-val 50 poll-interval 0.5
        action 0.0 syslog msg "High CPU DETECTED. Please wait - logging Information
      to file system:high_cpu.txt"
        action 0.1 cli command "enable"
        action 0.2 cli command "show clock | append file system:high_cpu.txt"
        action 1.2 cli command "term length 0"
        action 1.3 cli command "show process cpu sorted | append file system:high_cpu.txt"
        action 1.4 cli command "show log | append file system:high_cpu.txt"
        action 1.5 cli command "show interfaces | append file system:high_cpu.txt"
        action 1.6 cli command "term length 24"

      Remove Script

      Enter this command in order to remove an EEM script:
      Switch(config)#no event manager applet applet 
    • Based On: http://www.cisco.com/c/en/us/support/docs/switches/catalyst-6500-series-switches/116141-trouble-eem-scripts-00.html
      Contributed by Cisco Engineers: Shashank Singh and Saurav Lahiri

      Saturday, September 26, 2015

      Linux - PPTP VPN Server (via GUI on Ubuntu)

       

      How to Setup a “Split Tunnel” VPN (PPTP) Client on Ubuntu 10.04

      Sometimes you need to use a VPN connection to grant access to remote network resources and for that you use a VPN, but if you don’t want all of your client traffic to go through the VPN link, you’ll need to setup your VPN to connect in a “split tunnel” mode. Here’s how to do it on Ubuntu.

      Note: make sure that you’ve read our article covering how to setup a VPN server for Debian-based Linux, which also covers configuring the Windows client.

       

      Split what the what now?

      The “split tunnel” term refers to the fact that the VPN client creates a “tunnel” from the client all the way to the server for “private” communication.

      Traditionally the VPN connection is set up to create “the tunnel” and once it is up all the client’s communication is routed through that “tunnel”. this was good back in the day when the VPN connection had a couple of goals that overlapped and complimented each other:

      • The connection was meant to grant access for the road warrior from anywhere.
      • All of  the client’s connections need to be secured by means of  going through the corporate firewall.
      • The client computer must not be able to connect a potentially malicious network with the corporate network.

      The way the VPN connection of the time achieved this goal, was to set the “default gateway” or “route” of the client machine to the corporate VPN server.

      • This method, while affective for the above goals has several disadvantages, espeshelly if you are implementing the VPN connection only for the “grant access” point:
      • It will slow down the entire surfing experience of the client computer to the speed of the VPN server’s upload speed, which is usually slow.
      • It will disable access to local resources like other computers in the local network unless they are all connected to the VPN, and even then the access will be slowed down because it has to go all the way to the internet and come back.

      To overcome these shortcomings we will create a regular VPN dialer with one note worthy exception, that we will set the system to NOT use it as the “Default Gateway” or “route” when connected.

      Doing this will make it so that the client will use the “VPN tunnel” only for the resources behind the VPN server and will access the internet normally for everything else.

       

      Let’s get cracking

      The first step is to get into “Network connections” and then “Configure VPN”.

      One way you can do this is by clicking the desktop icon for networking as shown in the picture.

      clip_image001

      Another way is to go to “System” > “Preferences” > “Network Connections”.

      clip_image002

      Once your on the “VPN” tab in the “Network connections” configurations window, click “Add”.

      clip_image003

      On the next window we only need to click “Create”, as the default connection type of PPTP is what we want to use.

      clip_image004

      In the next window give your dialer a name, fill in the gateway with your servers DNS-name or IP address as seen from the internet and fill in the user credentials.

      If you have used the “Setting up a VPN (PPTP) server on Debian” guide for the server setup or you are using this client for a DD-WRT PPTP server setup, you also need to enable the MPPE encryption options for authentication.

      Click on “Advanced”.

      clip_image005

      On the “Advanced Options” window check the first checkbox for the MPPE option, then the second checkbox to allow stateful encryption and click “OK”.

      clip_image006

      Back on the main window, click the “IPv4 Settings” tab.

      clip_image007

      On the routes configuration window check the checkbox of “Use this connection only for resources on its network”.

      clip_image008

      Activate the VPN connection client by clicking on the “Network connections” icon and selecting it.

      clip_image009

      That’s it, you can now access the resources on the VPN servers side as if you were on the same network while not sacrificing your download speed in the process…

       

      Taken From: http://www.howtogeek.com/51340/setting-up-a-split-tunnel-vpn-pptp-client-on-ubuntu-10-04/

      Friday, September 25, 2015

      Linux - PPTP VPN Server & Win XP/7 Client

       

      How to Setup a VPN (PPTP) Server on Debian Linux
      (also tested on the Raspberry Pi on Raspbian)

      VPN-ing into your server will allow you to connect to every possible service running on it, as if you were sitting next to it on the same network, without individually forwarding every port combination for every service you would like to access remotely.

      Using a VPN connection also has the upshot of, if desired, granting access to other computers on the network as if you where in it locally from anywhere across the internet.

      While not the most secure of the VPN solutions out there, PPTP is by far the simplest to install, configure and connect to from any modern system and from windows specifically as the client is a part of the OS since the XP days and you don’t need to mess with certificates (like with L2TP+IPsec or SSL VPNs) on both sides of the connection.

      Did i get you interested? then let’s go :)

       

      Preface

      • You will need to forward port 1723 and the GRE protocol (47) from the internet to the server to enable the connection (not covered here).
      • You will see me use VIM as the editor program, this is just because I’m used to it… you may use any other editor that you’d like.~

       

      Server Setup

      Install the pptp server package:
          sudo aptitude install pptpd

      Edit the “/etc/pptpd.conf” configuration file:
          sudo vim /etc/pptpd.conf

      Add to it:
          option /etc/ppp/pptpd-options
          localip 192.168.1.5
          remoteip 192.168.1.234-238,192.168.1.245

      Where the “localip” is the address of the server, and the remoteip are the addresses that will be handed out to the clients, it is up to you to adjust these for your network’s requirements.

      Edit the “/etc/ppp/pptpd-options” configuration file:
          sudo vim /etc/ppp/pptpd-options

      Append to the end of the file, the following directives:
          ms-dns 192.168.1.1
          nobsdcomp
          noipx
          mtu 1490
          mru 1490

      here we are assuming that we are editing the pptpd default options config and adding to it, but if for some reason you start with a black “pptpd-options”, you will need to enter those defaults (based on a “pptpd-options” on Raspberry Pi Runing Raspbian):

      name pptpd

      # BSD licensed ppp-2.4.2 upstream
      # with MPPE only

      refuse-pap
      refuse-chap
      refuse-mschap

      # Require the peer to authenticate
      # itself using MS-CHAPv2

      require-mschap-v2

      # Require MPPE 128-bit encryption
      require-mppe-128


      # Making the peer appear to other
      # systems to be on the local ethernet

      proxyarp

      # Debian: do not replace the default route
      # with this you get split tunelling

      nodefaultroute

      # Create a UUCP-style lock file for
      # the pseudo-tty to ensure exclusive

      lock

      # Disable Van Jacobson compression
      novj
      nobsdcomp

      # Turn off logging to stderr
      nologfd

      to get more detail on each item check a default “pptpd-options” file it’s has quite some detail on each item.

      Where the IP used for the ms-dns directive is the DNS server for the local network your client will be connecting to and, again, it is your responsibility to adjust this to your network’s configuration.

      Edit the chap secrets file:
          sudo vim /etc/ppp/chap-secrets

      Add to it the authentication credentials for a user’s connection, in the following syntax:
          username <TAB> * <TAB> users-password <TAB> *

      Restart the connection’s daemon for the settings to take affect:
          sudo /etc/init.d/pptpd restart

      If you don’t want to grant yourself access to anything beyond the server, then you’re done on the server side.

       

      Enable Forwarding (optional)

      While this step is optional and could be viewed as a security risk for the extremely paranoid, it is my opinion that not doing it defeats the purpose of even having a VPN connection into your network.

      By enabling forwarding we make the entire network available to us when we connect and not just the VPN server itself. Doing so allows the connecting client to “jump” through the VPN server, to all other devices on the network.

      To achieve this we will be flipping the switch on the “forwarding” parameter of the system.

      Edit the “sysctl” file:
          sudo vim /etc/sysctl.conf

      Find the “net.ipv4.ip_forward” line and change the parameter from 0 (disabled) to 1 (enabled):
          net.ipv4.ip_forward=1

      You can either restart the system or issue this command for the setting to take affect:
         sudo sysctl -p

      With forwarding enabled, all the server side settings are prepared.

      We recommend using a “Split Tunnel” connection mode for the VPN client.

      A more in depth explanation about the recommended “Split Tunnel” mode, as well as instructions for Ubuntu Linux users can be found in the “Setting up a “Split Tunnel” VPN (PPTP) Client on Ubuntu 10.04” guide.

      For windows users, follow the guides below to create the VPN client on your system.

       

       

      PPTP VPN Dialer Setup on XP (split tunnel)

      We will create a regular VPN dialer with one note worthy exception, that we will set the system to NOT use it as the “Default Gateway” when connected.

      Skipping this step will limit the connecting computer’s surfing speed to the VPN server’s upload speed (usually slow) because all of it’s traffic would be routed through the VPN connection and that’s not what we want.

      We need to start the connection wizard, so we will go to control panel.

      Go to “Start” and then “Control Panel”.

      clip_image001

      *If your system is setup with the “Classic Start Menu” you need to just point on the “Control Panel” icon and then select “Network Connections”.

      In “Control Panel” double click “Network Connections”.

      clip_image002

      Double click “New Connection wizard”.

      clip_image003

      In the “New Connection wizard” welcome screen click “Next”.

      clip_image004

      Select the “Connect to the network at my workspace” option and then “Next”.

      clip_image005

      Select the “Virtual Private Network connection” option and then “Next”.

      clip_image006

      Give a name to the VPN connection.

      clip_image007

      Type in the name of your VPN servers DNS-name or IP address as seen from the Internet.

      clip_image008

      Optionally You may choose to “Add a shortcut to the desktop” and “Finish”.

      clip_image009

      Now comes the tricky part, it is vitally important you do NOT try to connect now and go into the dialer’s “Properties”.

      clip_image010

      Go to the networking tab and change the “Type of VPN” to “PPTP VPN” as shown in the picture below (this is optional but will shorten the time it takes to connect) then go into “Properties”.

      clip_image011

      On the next window go into “Advance” without changing anything else.

      clip_image012

      On the next window, uncheck the “Use default gateway on remote network” option.

      clip_image013

      Now enter the connection’s credentials as you set them on the server and connect.

      clip_image014

      That’s it, you should now be able to access all the computers on your network from the XP client… Enjoy.

       

       

      PPTP VPN Dialer Setup on Win7 (split tunnel)

      We will create a regular VPN dialer with one note worthy exception, that we will set the system to NOT use it as the “Default Gateway” when connected.

      Skipping this step will limit the connecting computer’s surfing speed to the VPN server’s upload speed (usually slow) because all of it’s traffic would be routed through the VPN connection and that’s not what we want.

      We need to start the connection wizard, so we will go to the “Network and Sharing Center”.

      Click the network icon in the system tray and then “Open Network and Sharing Center”

      clip_image015

      In the Network center click on “Set up a new connection or network”.

      clip_image016
      Select “Connect to a workplace” and then “Next”.
      clip_image017
      Click on the first option of “Use my Internet connection (VPN)”.

      clip_image018
      Set the address of your VPN server as seen from the internet either by DNS-name or IP.

      clip_image019
      Even though it won’t connect now because we stil need to go into the dialer’s properties, Set the username and password and hit connect.

      clip_image020
      After the connection will fails to connect (that’s normal), click on “Set up the connection anyway”.

      clip_image021
      Back in the “Network Center”, click on “Change adapter settings”.

      clip_image022
      Find the dialer we have just created, right click it and select “Properties”.

      clip_image023

      While its optional, for a faster connecting dialer, set the “type” of VPN to PPTP under “the “Security” tab.
      clip_image024

      Go to the “Networking” tab, select the IPv4 protocol and go into it’s properties.

      clip_image025

      In the next window, click “Advance” without changing anything else.

      clip_image026

      On the next window, uncheck the “Use default gateway on remote network” option.

      clip_image027

      Now enter the connection’s credentials as you set them on the server and connect.

      clip_image028

      That’s it, you should now be able to access all the computers on your network from the win7 client.

      Note: Be sure and read our guide to setting up a VPN client for Ubuntu Linux.

      Based On; http://www.howtogeek.com/51237/setting-up-a-vpn-pptp-server-on-debian/