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.
