множество ssh към cisco рутери, използващи очаквания скрипт

Не съм хардкор човек със скриптове, но се опитвам да уча. Току-що започнах със скриптове за очакване за автоматизиране на задачи на Cisco рутер. Моля, бъдете нежни и ме тласнете в правилната посока. След това ще направя съответно проучване.

Изискване: да създадете 2 ssh сесии към 2 различни Cisco рутера и да изпълните уникални команди на всеки от тях в един скрипт за очакване.

Текущ метод: Наричам този скрипт за очакване, използвайки обикновен bash скрипт. Мога да постигна изискването с помощта на два скрипта за очакване, но искам да направя това с помощта на един скрипт за очакване.

Пример: # Set variables 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