Разрыв активной сессии на cisco
Разрыв активной сессии на cisco
Я нашел 2 варианта разрыва активной сессии на циско.
делаю команду
Router# sh vpdn session stat
%No active L2TP tunnels
%No active L2F tunnels
PPTP Session Information Total tunnels 3 sessions 3
LocID---RemID---TunID---Intf---Username---State----Last Chg---Uniq ID
166------512--------174-----Vi8---nikola_xa---estabd---00:07:23----170
167------512--------175-----Vi5---sa-sergey---estabd---00:06:34----171
168------163--------176-----Vi6---ksv----------estabd---00:06:01----172
Варианты разрыва в ручную.
1. clear vpdn tunnel pptp id 176 (значение из TunID)
2. clear int Vi6 (значение из Intf)
Вот только вопрос как зацепить Правила Firewall, чтоб сработал разрыв сессии.
Как должна выглядеть строка clear vpdn tunnel pptp id в утм TunID
делаю команду
Router# sh vpdn session stat
%No active L2TP tunnels
%No active L2F tunnels
PPTP Session Information Total tunnels 3 sessions 3
LocID---RemID---TunID---Intf---Username---State----Last Chg---Uniq ID
166------512--------174-----Vi8---nikola_xa---estabd---00:07:23----170
167------512--------175-----Vi5---sa-sergey---estabd---00:06:34----171
168------163--------176-----Vi6---ksv----------estabd---00:06:01----172
Варианты разрыва в ручную.
1. clear vpdn tunnel pptp id 176 (значение из TunID)
2. clear int Vi6 (значение из Intf)
Вот только вопрос как зацепить Правила Firewall, чтоб сработал разрыв сессии.
Как должна выглядеть строка clear vpdn tunnel pptp id в утм TunID
а что мешает в скрипте определить этот параметр используя ULOGIN ?
я использую ip адрес и передаю его скрипту
образец брал толи тут толи на опеннете..
я использую ip адрес и передаю его скрипту
Код: Выделить всё
#!/bin/sh
SNMPWALK="/usr/local/bin/snmpwalk"
SNMPSET="/usr/local/bin/snmpset"
LOG="/var/log/cisco-snmp"
COMMUNITY="public"
CISCO="127.0.0.1"
USER_IP="$1"
test -z "$USER_IP" && exit 1
INT_NUM=`$SNMPWALK -v2c -c $COMMUNITY $CISCO .1.3.6.1.4.1.9.9.150.1.1.3.1.3 | grep $USER_IP | awk -F. '{print $10}' | awk '{print $1}'`
test -z "$INT_NUM" && exit 1
$SNMPSET -v2c -c $COMMUNITY $CISCO .1.3.6.1.4.1.9.9.150.1.1.3.1.5.$INT_NUM i 1 >/dev/null 2>&1
exit 1
Код: Выделить всё
#!/bin/sh
if [ $1 ]; then
UNAME="$1"
VPN_NEW=`rsh 10.90.90.90 sh vpdn session stat | grep -iw $UNAME | awk '{print $3}'`
if [ "$VPN_NEW" ]; then
rsh 10.90.90.90 clear vpdn tunnel pptp id $VPN_NEW > /dev/null
rsh 10.90.90.90 clear vpdn tunnel l2tp id $VPN_NEW > /dev/null
else
VPN_NEW=`rsh 10.90.90.90 sh vpdn session stat | grep -iw $UNAME | awk '{print $3}'`
if [ "$VPN_NEW" ]; then
rsh 10.90.90.90 clear vpdn tunnel pptp id $VPN_NEW > /dev/null
rsh 10.90.90.90 clear vpdn tunnel l2tp id $VPN_NEW > /dev/null
fi
fi
fi
exit 0
Код: Выделить всё
#!/usr/bin/perl
use DBI;
if ($#ARGV != 0) {
print "Usage: close_vpn.pl user_vpn_login\n";
exit 0;
}
$mysqlserver="10.90.90.91";
$dsn = "DBI:mysql:database=UTM5;host=$mysqlserver";
$dbh = DBI->connect($dsn, "radlogin", "password");
my $login = $ARGV[0];
$sth = $dbh->prepare("SELECT acctsessionid,nasipaddress FROM radutmp WHERE username='$login' ORDER BY acctstarttime DESC");
$sth->execute();
$ref = $sth->fetchrow_hashref();
my ($sess_id,$nasipaddress) = ($ref->{'acctsessionid'},$ref->{'nasipaddress'});
$sess_id = hex($sess_id);
if ($sess_id > 0) {
`/usr/bin/snmpset -c nFrKwGsObePq -v2c $nasipaddress 1.3.6.1.4.1.9.9.150.1.1.3.1.5.$sess_id i 1`;
}
exit 0;
до чего ленивый одмин пошел, скрипт элементарный
пишется за пол часа с 2мя перекурами при помощи http://php.net/
готов за 15% от вашей зарплаты написать его
пишется за пол часа с 2мя перекурами при помощи http://php.net/
готов за 15% от вашей зарплаты написать его