вторник, 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"у.

Комментариев нет:

Отправить комментарий