Subversion Repositories sysadmin_scripts

Rev

Rev 24 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
24 rodolico 1
#! /usr/bin/perl -w
2
 
3
my $configDirs = '/etc/openvpn';
4
 
5
sub getVPNSessions {
6
   my %sessions;
7
 
8
   @sessions = `ps ax | grep openvpn`;
9
   foreach my $session ( @sessions ) {
10
      my ($trash,$pid,$terminal,$flags,$time,@commands) = split( /\s+/, $session );
11
      my $command = join( ' ', @commands );
12
      next if $command =~ m/grep/;
13
      $command =~ m/^openvpn\s+([^.]+)\.ovpn/;
14
      $command = $1;
15
      $sessions{$command} = $pid;
16
   }
17
   return \%sessions;
18
}
19
 
20
my $user =  getlogin || getpwuid($<) || "";
21
 
22
my $destination = shift;
23
 
24
my $existingSessions = &getVPNSessions();
25
die "VPN Session already open for $destination (PID  $$existingSessions{$destination})\n" if ( $$existingSessions{ $destination } );
26
 
27
die "You must pass the name of the destination on the command line\n" unless $destination;
28
die "Could not locate configuration file in [$configDirs/$destination]\n" 
29
   unless -d "$configDirs/$destination";
30
chdir( "$configDirs/$destination" );
31
if ( -f "$destination.ovpn" ) {
32
   exec( "sudo openvpn $destination.ovpn");
33
} else {
34
   die "Could not open '$destination.ovpn' in directory '$configDirs/$destination'\n";
35
}
36
1;