Так как перешли на новый CA, пришлось создавать и рассылать кучу сертификатов. Более 130 штук, из экселевского файлика. Ручками это было делать ленива, то за 3 часа был написан мегаскрипт на Sikuli, который сам копировал и вставлял необходимые поля для сертификата и рассылал их. В общем Sikuli неплохая вещь :)
Читать далее
Показаны сообщения с ярлыком скрипт. Показать все сообщения
Показаны сообщения с ярлыком скрипт. Показать все сообщения
вторник, 16 марта 2010 г.
среда, 27 января 2010 г.
Sikuli
Наткнулся тут на такую фигню как Sikuli, это кросплатформенный(написанный на Java) скриптовый язык для автоматизации действий под GUI. Весит 9мб. Поигрался - достаточно интересный проект, есть даже пара идей как его использовать.
Видео как оно работает под катом:
Читать далее
Видео как оно работает под катом:
Читать далее
Теги:
скрипт
четверг, 30 июля 2009 г.
Удаленно дропаем сессии на CISCO
Задача следующая, есть некий билинг, у нас стоит всеми любимый UTM5 от компании NetUP, необходимо чтобы по команде билинга дропались сессии например когда у абонента кончается бабло на счету.
Тоесть нада вывести пользователя и определить его id
show vpdn session stat
потом дропнуть ему сессию
clear vpdn tunnel pptp id <ид_сессии>
По действиям, первое, что нам необходимо, это включить rsh на VPN сервере и дать разрешение на дроп сессии.
Заходим на CISCO в режим глобального конфигурирования, команды следующие:
rlogin trusted-remoteuser-source local - включает аунтификацию по локальному логину
rlogin trusted-localuser-source local - тоже самое
no ip rcmd domain-lookup - дабы не резолвил имя домена
ip rcmd rsh-enable - включили rsh
ip rcmd remote-host utm 192.168.1.1 root enable 8 - локальное имя utm, ip откуда - 192.168.1.1, удаленное имя root(это пользователь под которым будет запущен rsh, если не root то пишем под кем запускаем), enable 8 - права
privilege exec level 8 show vpdn session state - разрешаем для уровня 8 сделать команду show vpdn session state
privilege exec level 8 clear vpdn tunnel pptp id - разрешаем для уровня 8 сделать команду clear vpdn tunnel pptp id
Сохраняем конфигурацию и проверяем, на компьютере ip адрес которой мы указали в настройках.
должно получится что то типа такого:
[root@server odmin]# rsh 192.168.1.2 -l utm sh vpdn session stat
connect to address 192.168.1.2 port 544: Connection refused
Trying krb4 rsh...
connect to address 192.168.1.2 port 544: Connection refused
trying normal rsh (/usr/bin/rsh)
%No active L2F tunnels
L2TP Session Information Total tunnels 1 sessions 1
LocID RemID TunID Username, Intf/ State Last Chg Uniq ID
Vcid, Circuit
365 1027 3280 abonlogin1, Vi359 est 16:48:53 476
PPTP Session Information Total tunnels 173 sessions 173
LocID RemID TunID Intf Username State Last Chg Uniq I
39421 49152 40317 Vi332 abonlogin2 estabd 12:19:32 254
если увидели, значит все в порядке, VPN сервер пускает
выбираем TunID который равен 40317
и проверяем такимже методом команду clear
rsh 192.168.1.2 -l utm clear vpdn tunnel pptp id 40317
VPN сессия должна дропнутся.
Азы понятны, далее элементарный скриптик на баше, типа этого куска из моего скрипта:
TUN_PID=`rsh $CISCO_IP -l utm sh vpdn session stat | grep $USERLOGIN | awk '{print $3}'`
if [ "$TUN_PID" ]; then
rsh $CISCO_IP -l utm clear vpdn tunnel pptp id $TUN_PID > /dev/null
echo "$DATE $USERLOGIN EMERGENCY tunnel $TUN_PID closed in $CISCO_IP!" >> /var/log/utm5/close-vpn.log
fi
При заканчивании бабла срабатывает тригер на блокировку абонента, билинг отдает скриптику логин, вычисляется PID тунеля и происходит дропанье. Все счастливы и довольны. Особенно дропнутый абонент.
Читать далее
Тоесть нада вывести пользователя и определить его id
show vpdn session stat
потом дропнуть ему сессию
clear vpdn tunnel pptp id <ид_сессии>
По действиям, первое, что нам необходимо, это включить rsh на VPN сервере и дать разрешение на дроп сессии.
Заходим на CISCO в режим глобального конфигурирования, команды следующие:
rlogin trusted-remoteuser-source local - включает аунтификацию по локальному логину
rlogin trusted-localuser-source local - тоже самое
no ip rcmd domain-lookup - дабы не резолвил имя домена
ip rcmd rsh-enable - включили rsh
ip rcmd remote-host utm 192.168.1.1 root enable 8 - локальное имя utm, ip откуда - 192.168.1.1, удаленное имя root(это пользователь под которым будет запущен rsh, если не root то пишем под кем запускаем), enable 8 - права
privilege exec level 8 show vpdn session state - разрешаем для уровня 8 сделать команду show vpdn session state
privilege exec level 8 clear vpdn tunnel pptp id - разрешаем для уровня 8 сделать команду clear vpdn tunnel pptp id
Сохраняем конфигурацию и проверяем, на компьютере ip адрес которой мы указали в настройках.
должно получится что то типа такого:
[root@server odmin]# rsh 192.168.1.2 -l utm sh vpdn session stat
connect to address 192.168.1.2 port 544: Connection refused
Trying krb4 rsh...
connect to address 192.168.1.2 port 544: Connection refused
trying normal rsh (/usr/bin/rsh)
%No active L2F tunnels
L2TP Session Information Total tunnels 1 sessions 1
LocID RemID TunID Username, Intf/ State Last Chg Uniq ID
Vcid, Circuit
365 1027 3280 abonlogin1, Vi359 est 16:48:53 476
PPTP Session Information Total tunnels 173 sessions 173
LocID RemID TunID Intf Username State Last Chg Uniq I
39421 49152 40317 Vi332 abonlogin2 estabd 12:19:32 254
если увидели, значит все в порядке, VPN сервер пускает
выбираем TunID который равен 40317
и проверяем такимже методом команду clear
rsh 192.168.1.2 -l utm clear vpdn tunnel pptp id 40317
VPN сессия должна дропнутся.
Азы понятны, далее элементарный скриптик на баше, типа этого куска из моего скрипта:
TUN_PID=`rsh $CISCO_IP -l utm sh vpdn session stat | grep $USERLOGIN | awk '{print $3}'`
if [ "$TUN_PID" ]; then
rsh $CISCO_IP -l utm clear vpdn tunnel pptp id $TUN_PID > /dev/null
echo "$DATE $USERLOGIN EMERGENCY tunnel $TUN_PID closed in $CISCO_IP!" >> /var/log/utm5/close-vpn.log
fi
При заканчивании бабла срабатывает тригер на блокировку абонента, билинг отдает скриптику логин, вычисляется PID тунеля и происходит дропанье. Все счастливы и довольны. Особенно дропнутый абонент.
Читать далее
пятница, 24 июля 2009 г.
Дока по написанию Bash скриптов
Постоянно забываю адрес адекватной доки по BASH, в закладках она у меня есть, но иной раз бывает приходится быстро написать какойнить скриптик не со своего компа, приходится лопатить гугель на тему адекватной доки. Собсно сцылка на тру доку:Advanced Bash-Scripting Guide
Читать далее
Читать далее
вторник, 21 июля 2009 г.
Из серии, не просто, а очень просто
Бывает, что надо выполнять какое либо действие в том же линуксе в последний день месяца, но так как в месяце у нас не одинаковое количество дней, гдето 30, гдето 31, а гдето вообще 28, народ начинает извращаться, придумывая адские формулы расчета високосных годов, перекапывая гугель в поисках функций гадания на кофейной гуще. Немного творческого подхода и все оказывается гораздо проще.
Логика следующая, определяем сегодняшнюю дату, прибавляем к ней 1 день(86401 секунду), потом смотрим какой день получается, если он равна 1(еденице) то значит новый месяц наступил и текущий день является последним в текущем месяце.
Элементарный пример на томже баше:
Запихиваем это дело в крон с любой переодичностью и радуемся.
Читать далее
Логика следующая, определяем сегодняшнюю дату, прибавляем к ней 1 день(86401 секунду), потом смотрим какой день получается, если он равна 1(еденице) то значит новый месяц наступил и текущий день является последним в текущем месяце.
Элементарный пример на томже баше:
#!/bin/bash
DATENOW=`date +%d --date="+1day"`
if [ $DATENOW -eq 1 ]
then
/home/odmin/nash_skript.sh
fi
Запихиваем это дело в крон с любой переодичностью и радуемся.
Читать далее
понедельник, 20 июля 2009 г.
Балансировка нагрузки
До некоторого времени использовали Round-robin но иногда перекосы всетаки упирали какую нибуть циску в потолок, для проверки перекосов за 10 минут с перекуром был скреативен след скриптик. Запихиваем в cron с необходимой переодичностью и получаем щастье.
#!/bin/bash
#date
DATE=`date "+%d.%m.%Y %H:%M:%S"`
#IP adress pool cisco
CISCO_IP1=192.168.1.1
CISCO_IP2=192.168.1.2
#max count VPN session
MAXVPN_C1=1500
MAXVPN_C2=1500
#path to snmpwalk
PTSNMPW=/usr/local/bin/snmpwalk
#path to bind
PTBIND=/etc/init.d/bind
#path to zone file
PTZONEF=/var/lib/bind/zone/pptp.example.ru.db
#snmp community
COMMUN=public
#MIB
MIB=1.3.6.1.4.1.9.10.24.1.1.4.1.2.3
#main zone
MAINZONE=/var/lib/bind/zone/example.ru.named
#cisco zone file name
CZONE=pptp.exampe.ru.db
#log
LOG=/var/log/cisco_reload.log
#main
COUNT=`$PTSNMPW -v 2c $CISCO_IP1 -c $COMMUN $MIB | cut -d ' ' -f4`
if [ "$COUNT" -le "$MAXVPN_C1" ]
then
echo "login IN A $CISCO_IP1" > $PTZONEF
else
echo "$DATE - reloading CISCO 1 complited" >> $LOG
echo ";CISCO1 reloading" > $PTZONEF
fi
COUNT=`$PTSNMPW -v 2c $CISCO_IP2 -c $COMMUN $MIB | cut -d ' ' -f4`
if [ "$COUNT" -le "$MAXVPN_C2" ]
then
echo "login IN A $CISCO_IP2" >> $PTZONEF
else
echo "$DATE - reloading CISCO 2 complited" >> $LOG
fi
INCLTEST=`cat $MAINZONE | grep -c $CZONE`
if [ "$INCLTEST" -eq 0 ]
then echo "\$include \"$CZONE\"" >> $MAINZONE
fi
$PTBIND reload
echo "$DATE - work complited!" >> $LOG
Читать далее
#!/bin/bash
#date
DATE=`date "+%d.%m.%Y %H:%M:%S"`
#IP adress pool cisco
CISCO_IP1=192.168.1.1
CISCO_IP2=192.168.1.2
#max count VPN session
MAXVPN_C1=1500
MAXVPN_C2=1500
#path to snmpwalk
PTSNMPW=/usr/local/bin/snmpwalk
#path to bind
PTBIND=/etc/init.d/bind
#path to zone file
PTZONEF=/var/lib/bind/zone/pptp.example.ru.db
#snmp community
COMMUN=public
#MIB
MIB=1.3.6.1.4.1.9.10.24.1.1.4.1.2.3
#main zone
MAINZONE=/var/lib/bind/zone/example.ru.named
#cisco zone file name
CZONE=pptp.exampe.ru.db
#log
LOG=/var/log/cisco_reload.log
#main
COUNT=`$PTSNMPW -v 2c $CISCO_IP1 -c $COMMUN $MIB | cut -d ' ' -f4`
if [ "$COUNT" -le "$MAXVPN_C1" ]
then
echo "login IN A $CISCO_IP1" > $PTZONEF
else
echo "$DATE - reloading CISCO 1 complited" >> $LOG
echo ";CISCO1 reloading" > $PTZONEF
fi
COUNT=`$PTSNMPW -v 2c $CISCO_IP2 -c $COMMUN $MIB | cut -d ' ' -f4`
if [ "$COUNT" -le "$MAXVPN_C2" ]
then
echo "login IN A $CISCO_IP2" >> $PTZONEF
else
echo "$DATE - reloading CISCO 2 complited" >> $LOG
fi
INCLTEST=`cat $MAINZONE | grep -c $CZONE`
if [ "$INCLTEST" -eq 0 ]
then echo "\$include \"$CZONE\"" >> $MAINZONE
fi
$PTBIND reload
echo "$DATE - work complited!" >> $LOG
Читать далее
Подписаться на:
Сообщения (Atom)