вторник, 12 февраля 2013 г.
Скрипт записи mac адреса в ARP таблицу на CISCO
Часто бывает, что необходимо отправлять команды на cisco извне. В моем случае необходимо отключать доступ юзеров в интернет, один из способов - это подставление липовых mac'ов в ARP таблицу маршрутизатора. NetUP UTM5 Billing умеет работать с cisco на уровне добавления записей в динамический access-list, но не все cisco поддерживают эти динамические листы. Итак, отправляем из биллинга команду, которая вызывает нижеописанный скрипт.
Скрипт написан на Bash с использованием Expect.
#!/bin/bash
prompt="*#"
promptconf="*(config)#"
expect -c "
spawn ssh -l user ip-address #инициализация ssh сессии, где указывается пользователь и адресс cisco.
sleep 2
expect {
"*word:"
{
send "passw0rd" #отправка пароля на cisco.
}
}
sleep 2
expect {
"$prompt"
{
send \"conf t\" #переход в режим конфигурации.
send \r
}
}
sleep 2
expect {
"$promptconf"
{
send \"arp $1 $2 ARPA\" #отправляется команда c внешними переменными $1, $2.
send \r
}
}
sleep 10
expect {
"$promptconf"
{
send \"exit\"
send \r
}
}
sleep 10
expect {
"$prompt"
{
send \"write\"
send \r
}
}
sleep 2
expect {
"$prompt"
{
send \"logout\"
send \r
}
}
expect eof "
Небольшой апдейт: частая запись конфига на cisco грузит память, что сказывается на качестве оказываемых услуг в последствии. Решается это удалением из скрипта блока:
expect {
"$prompt"
{
send \"write\"
send \r
}
}
sleep 2
Эту часть можно вынести в отдельный скрипт, который будет выполняться по Cron"у.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий