несколько маршрутизаторов ssh для cisco с использованием сценария ожидания

Я не хардкорный специалист по сценариям, но пытаюсь учиться. Я только начал с ожидаемых сценариев для автоматизации задач на маршрутизаторе cisco. Пожалуйста, будьте нежны и подтолкните меня в правильном направлении. После этого я проведу соответствующие исследования.

Требование: запустить 2 сеанса ssh на 2 разных маршрутизатора cisco и запустить уникальные команды на каждом из них в одном сценарии ожидания.

Текущий метод: я называю этот сценарий ожидания, используя обычный сценарий bash. Я могу выполнить требование, используя два сценария ожидания, но я хочу сделать это, используя один сценарий ожидания.

Пример: # Установка переменных set router1 [lindex $argv 0] set router2 [lindex $argv 1] set username [lindex $argv 2] ​​set password [lindex $argv 3]

spawn ssh -o StrictHostKeyChecking=no $username\@$router1

expect "*assword"
send "$enablepassword\n"
expect "#"
send "command on router1"
expect "#"

close

#i want to close this ssh session and spawn ssh process to router2


spawn ssh -o StrictHostKeyChecking=no $username\@$router2 
#i tried this     simply in the same script and it doesn't work,mostly      because #it is not correct 

expect "*assword"
send "$enablepassword\n"
expect "#"
send "command on router2"
expect "#"

person Ronald Michael    schedule 03.03.2016    source источник
comment
У вас есть необходимость взаимодействовать с обоими маршрутизаторами одновременно? Или достаточно последовательного взаимодействия?   -  person Dinesh    schedule 03.03.2016
comment
взаимодействие с ними последовательно достаточно хорошо   -  person Ronald Michael    schedule 03.03.2016


Ответы (1)


Я думаю, вам следует использовать глобальную переменную spawn_id, она помогает взаимодействовать с несколькими сеансами ssh или telnet. Ваш код должен выглядеть примерно так:

spawn ssh -o StrictHostKeyChecking=no $username\@$router1
set R1 $spawn_id
expect -i $R1 "*assword"
send -i $R1 "$enablepassword\n"
expect -i $R1 "#"
send -i $R1 "command on router1"
expect -i $R1 "#"
send -i $R11 "exit\r"


spawn ssh -o StrictHostKeyChecking=no $username\@$router2 
set R2 $spawn_id

expect -i $R2 "*assword"
send -i $R2 "$enablepassword\n"
expect -i $R2 "#"
send -i $R2 "command on router2"
expect "#"
person qwpo    schedule 03.03.2016