GroLug - Associazione Culturale Grosseto Linux Users Group, LUG di Grosseto e provincia

Associazione Culturale Grosseto Linux Users Group, LUG di Grosseto e provincia

Passa al contenuto

VPN Management Perl Script

Discussioni tecniche di vario genere e natura

Moderatori: klizya, tom

VPN Management Perl Script

Messaggiodi blackms » 02/11/2009, 10:27

L'altro giorno avevo 10 minuti liberi ed ho scritto un banalissimo scriptino in perl per printare le statistiche di OpenVPN collegandosi tramite l'interfaccia di mgmt.
L'ho fatto per evitare di dovermi collegare ogni volta io tramite telnet e dare i vari comandi.
E` in perl in quanto ci sono le librerie gia` scritte per gestire OpenVPN Mgmt.
Di seguito lo script:
Codice: Seleziona tutto
#!/usr/bin/perl

use strict;
use Net::OpenVPN::Manage;

sub vconnect;
sub show_client;
sub show_log;
sub show_route;
sub vexit;
sub main;

my $vpn = Net::OpenVPN::Manage->new({host=>'117.0.0.1', port=>'8000', timeout=>5});

sub main {
   #Inizializzo la connessione
   vconnect() == 1 and vexit("Errore nella connessione.");
   SWITCH: for ($ARGV[0]) {
      /showclient/   && do {
               show_client;
               last SWITCH;
            };
      /showlog/   && do {
               show_log;
               last SWITCH;
            };
      /showroute/   && do {
               show_route;
               last SWITCH;
            };
      print      "Errore!\n";
   }
   
}

sub vconnect {
   unless($vpn->connect()) {
      print $vpn->{error_msg}."\n";
      return 1;
   }
   return 0;
}
sub show_client {
   my $r = $vpn->status_ref();
   foreach my $array_ref ( @{$r->{CLIENT_LIST}} ){
      print "Common Name: $$array_ref[0], bytes sent: $$array_ref[3], bytes recvd: $$array_ref[4]\n";
   }
}

sub show_log {
   my $logs  = $vpn->log('all');
   print @{$logs};
}

sub show_route {
   my $routing = $vpn->status_ref();
   foreach my $array_routing ( @{$routing->{ROUTING_TABLE}} ) {
      print@{$array_routing};
   }
}

sub vexit() {
   print @_[0]."\n";
   exit 1;
}

main;


Il codice e` molto leggibile, ho sddiviso tutto per avere una cosa molto chiara da leggere.
Credo che questo scriptino lo continuero` fancendolo diventare un buon tool di mgmt a linea di comando appena ho tempo.
Nel frattempo per chi di voi usa OpenVPN puo` prenderlo e modificarselo a proprio piacimento.

Byezz.
FD_ZERO(&fds);
FD_SET(sock_fd, &fds);

sock_ret = select(sock_fd+1, &fds, NULL, NULL, &fd_timeout);
Avatar utente
blackms
Esperto
 
Messaggi: 333
Iscritto il: 02/12/2004, 00:09
Località: Grosseto

Torna a TecnoGRO

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

cron