Visit Our UNIX and Linux User Community


vpn connect/disconnect shell script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting vpn connect/disconnect shell script
# 1  
Old 09-23-2009
vpn connect/disconnect shell script

Hi

I am not so good in scripting..trying ot learn it...need guidance of the experts in shell scripting..
Let me explain the scenario first..
a server MX1 is connected to another server MX2[199.8.7.29] through vpn..every 5 minute a script runs to test vpn connectivity between the 2 servers.when the vpn goes down a mail is sent as notification from MX..here is the shell script i have written on MX1..

sleep 1
l=`nmap -P0 -p25 199.8.7.29`
echo $l > /var/log/vpncon.log && echo $l >> /var/log/monscrpt.log
grep -qi "open" /var/log/vpncon.log
j=`echo $?`
if [ $j -ne 0 ]; then
echo Partner VPN Failed >> /var/log/monscrpt.log && echo $l | mailx -s "Partner VPN Failed" 'aarti_sankhe@cactus.com'
fi

the scipt only sends an email when the vpn goes down..
my next task is when the vpn comes up i need to send a mail form this script hat the vpn is up now..
please suggest.
Thanks in advance..
# 2  
Old 09-23-2009
Java

Will this work ... assuming you are using bash 2.03 or higher
------------------------------------------------------------------------
if nmap -P0 -p25 199.8.7.29 | grep -qi open >/dev/null 2>&1;
echo "[ $(/bin/date) ]: Partner VPN Failed" >> /var/log/monscrpt.log
mailx -s "Partner VPN Failed" 'aarti_sankhe@cactus.com' < /dev/null
exit 1;
else
echo "[ $(/bin/date) ]: VPN status looks good " >> /var/log/monscrpt.log
fi
exit 0;
------------------------------------------------------------------------

You might need to check with syntax ... mostly it will work
One thing I hate is log files without any date/time on when the event was last checked ... So I added that.
# 3  
Old 09-23-2009
Quote:
Originally Posted by chakrapani
Will this work ... assuming you are using bash 2.03 or higher
------------------------------------------------------------------------
if nmap -P0 -p25 199.8.7.29 | grep -qi open >/dev/null 2>&1;
echo "[ $(/bin/date) ]: Partner VPN Failed" >> /var/log/monscrpt.log
mailx -s "Partner VPN Failed" 'aarti_sankhe@cactus.com' < /dev/null
exit 1;
else
echo "[ $(/bin/date) ]: VPN status looks good " >> /var/log/monscrpt.log
fi
exit 0;
------------------------------------------------------------------------

You might need to check with syntax ... mostly it will work
One thing I hate is log files without any date/time on when the event was last checked ... So I added that.



hi chakrapani,

Thank you very much for the solution..the nmap command also logs the date and time along with the connectivity status in the log file...
I will test the script you wrote above...
# 4  
Old 09-23-2009
Java Better version

Code:
#!/bin/bash
VPNLOG="/var/log/vpncon.log"
MONLOG="/var/log/monscrpt.log"
STATUSFILE=/var/log/VPNSTATUS

# email space seperated
EMAILTO="aarti_sankhe@cactus.com chakrapani@WHATEVER"

function laststatus {
if grep $1  $STATUSFILE
then
  exit 1
fi
  exit 0
}

nmap -P0 -p25 199.8.7.29 > $VPNLOG
cat $VPNLOG >> $MONLOG
if grep -qi "open" $VPNLOG;
then
   echo "Partner VPN OK " >> $MONLOG
  ( laststatus "DOWN" ) && mailx -s "Partner VPN UP again" $EMAILTO < $VPNLOG ||   echo "UP" > $STATUSFILE
else
   echo "Partner VPN Failed" >> $MONLOG
  ( laststatus "UP" ) && mailx -s "Partner VPN Failed" $EMAILTO < $VPNLOG || echo "DOWN" > $STATUSFILE
fi

This has status also so you can put this in cron to check every 5 mins and will email only if there is status change...
At least I would not like to be part of this email list ... will get very annoying after couple of days.

You have to cleanup a bit to accommodate on your system

Last edited by chakrapani; 09-24-2009 at 05:51 AM..
# 5  
Old 09-24-2009
Quote:
Originally Posted by chakrapani
#!/bin/bash
VPNLOG="/var/log/vpncon.log"
MONLOG="/var/log/monscrpt.log"
STATUSFILE=/var/log/VPNSTATUS

# email space seperated
EMAILTO="aarti_sankhe@cactus.com chakrapani@WHATEVER"

function laststatus {
if grep $1 $STATUSFILE
then
exit 1
fi
exit 0
}

nmap -P0 -p25 199.8.7.29 > $VPNLOG
cat $VPNLOG >> $MONLOG
if grep -qi "open" $VPNLOG;
then
echo "Partner VPN OK " >> $MONLOG
( laststatus "DOWN" ) && mailx -s "Partner VPN UP again" $EMAILTO < $VPNLOG || echo "UP" > $STATUSFILE
else
echo "Partner VPN Failed" >> $MONLOG
( laststatus "UP" ) && mailx -s "Partner VPN Failed" $EMAILTO < $VPNLOG || echo "DOWN" > $STATUSFILE
fi

This has status also so you can put this in cron to check every 5 mins and will email only if there is status change...
At least I would not like to be part of this email list ... will get very annoying after couple of days.

You have to cleanup a bit to accommodate on your system


hi Chakrapani,

You wrote an entire script for me, thank you very much...I can simply run the script on my server and get things work as required..but i want to understand how the function is making the status of vpn store in the statusfile, would you please explain me the same?
Thanks.
# 6  
Old 09-24-2009
Java Some more light on script

ok One very important thing; even though the script looks complete it may not be ... you need to make sure that it runs on your system .. Shell scripts have a bad habit of behaving differently on every system ... So I prefer to write the script on system direclty.

My script explanation

First few lines are defn ...

The function called laststatus checks the last status of the VPN. The idea is script runs every 5 mins and will email only change of status not DOWN every five mins when down ; so the function gets a parameter say "UP" or "DOWN" when called and will return 1 or 0 based on what is there in the statusfile.

Example: function is called with DOWN
laststatus "DOWN" then it will grep the status file to see if it is was DOWN when it checked last time if the status was DOWN then it is suppose to tell main prg not to send email because there is no change .

In the main prg we check if VPN status is really down or not and make decisions.

Now since I saw that you had two logs called VPNLOG and MONLOG ... I add them. Only difference is VPNLOG is overwritten every 5 mins when script is called from cron. And MONLOG will be appended with status of this script also.

I guess you need to still fix the script to work on your system ... let forum know if this worked ..
# 7  
Old 09-24-2009
Quote:
Originally Posted by chakrapani
ok One very important thing; even though the script looks complete it may not be ... you need to make sure that it runs on your system .. Shell scripts have a bad habit of behaving differently on every system ... So I prefer to write the script on system direclty.

My script explanation

First few lines are defn ...

The function called laststatus checks the last status of the VPN. The idea is script runs every 5 mins and will email only change of status not DOWN every five mins when down ; so the function gets a parameter say "UP" or "DOWN" when called and will return 1 or 0 based on what is there in the statusfile.

Example: function is called with DOWN
laststatus "DOWN" then it will grep the status file to see if it is was DOWN when it checked last time if the status was DOWN then it is suppose to tell main prg not to send email because there is no change .

In the main prg we check if VPN status is really down or not and make decisions.

Now since I saw that you had two logs called VPNLOG and MONLOG ... I add them. Only difference is VPNLOG is overwritten every 5 mins when script is called from cron. And MONLOG will be appended with status of this script also.

I guess you need to still fix the script to work on your system ... let forum know if this worked ..


Hi chakrapani,

I executed the script you wrote in cron and named is as partner-vpn.sh. i did not disconnect the vpn..everytime i executed the script using ./partner-vpn or even if he script is executed by cron after every 5 minutes i get an email generated from the script "Partner VPN UP again, whereas the mail should be recieved only when the VPN is up after being down...

Previous Thread | Next Thread
Test Your Knowledge in Computers #513
Difficulty: Easy
Most programming languages are not case sensitive.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Trigger the execution of a script on SFTP Disconnect

Hi Guys, I suspect what I'm trying to do isn't possible, but I'm hoping someone can either confirm this or point me in the right direction. We have a third-party application which transfers a collection of files to our SFTP server ( Ubuntu 12.04 with OpenSSH ) . Once the app disconnects, we... (13 Replies)
Discussion started by: jamesdrinkwater
13 Replies

2. Shell Programming and Scripting

Shell script to connect

hello i try to made a report to conect all database to diferent OS HP-UX/LINUX/SOLARIS/AIX this is my example i have 5 db OS are HP-UX ps -fea | grep pmon root 1120 1 0 Nov 29 ? 5:14 ipmon -sD oracle 10286 1 0 Nov 29 ? 27:19 ora_pmon_BD1 oracle 10431... (7 Replies)
Discussion started by: ceciaide
7 Replies

3. Shell Programming and Scripting

Shell script to connect from one server to other

Dear Experts, I am new to the shell scripting. I am looking for a shell script to connect to one Unix/Linux server1 to other Unix/Linux server2 and trigger a SAP Event in that server2 (Which will trigger a job in SAP). Is this possible to connect from one server to the other server securely... (7 Replies)
Discussion started by: Venu V Reddy
7 Replies

4. Shell Programming and Scripting

Connect once db disconnect after all execution

Hi All, Please see the below code. it is working fine when in 'test_file' have only one emplid. test_file contains only emplid and date, like below ... 0000221|1/12/2003 0000223|1/1/1996 Problem :- when test_file contains more then one records(emplids) it is not giving any errors... (3 Replies)
Discussion started by: krupasindhu18
3 Replies

5. AIX

Help Me - AIX server connect to a VPN network

Hi, I have a task requested by my boss to create a script to enable a server to connect to a vpn network and then to connect to another server to upload some data... How can I connect to a vpn network from AIX server? via telnet? ssh? I have tried to google but mostly the answers are... (1 Reply)
Discussion started by: mushr00m
1 Replies

6. Shell Programming and Scripting

connect to db2 using shell script

Guys, I am trying to write a shell script that connect to wcsprod database and read the query #!/bin/ksh sqlplus -s < connect to wcsprod user wcsadm using pwd > select * from catentry fetch first 1 row only with ur; databse: wcsprod user: wcsadm pwd: pwd thanks (1 Reply)
Discussion started by: skatpally
1 Replies

7. Ubuntu

Ubuntu 10.04 - Unable to connect to Cisco VPN

Hi all, I am trying to configure and connect Cisco VPN on Ubuntu 10.04. I've imported .pcf file. The new vpn conn appears in the VPN Connections option. Now when I select it, it doesn't connect. Nothing happens. I am not able to connect to VPN at all. I tried using kvpnc as well but it... (10 Replies)
Discussion started by: morningSunshine
10 Replies

8. Shell Programming and Scripting

Connect to oracle db using shell script

Hi, I want to connect to oracle db using unix shell script. And i want to retrieve data from db through shell script. Please help me as soon as possible. Thanks, J.P. Das (1 Reply)
Discussion started by: jyotidas
1 Replies

9. Shell Programming and Scripting

Connect two servers in shell script

Hello all, I know that is a question which has made too many times, and I have been looking into the threads but all posted was not sucessfully for me so... I need a shell script which connect two unix servers, but NOT using ssh... Is there another way to do it? I've tried ssh but it didn't... (1 Reply)
Discussion started by: Geller
1 Replies

10. UNIX for Dummies Questions & Answers

Connect over ssh, start something, disconnect

i'm connecting with ssh from a windows pc to a linux system. i want to start e.g. a download and close my session afterwards. how do i do this without killing the download? thx in advance. (2 Replies)
Discussion started by: sTorm
2 Replies

Featured Tech Videos