Login_sbl Posted June 1, 2009 Posted June 1, 2009 нарыл где-то в нете скриптик #!/usr/bin/expect spawn telnet 192.168.100.100 expect ogin {send luser\r} expect assword {send TopSecret\r} send "show vlan\r" send "exit\r" expect eof -------------------------------------------------- Вот что пишет при запуске [root@localhost home]# ./test_exp bash: ./test_exp: /usr/bin/expect: bad interpreter: Нет такого файла или каталога [root@localhost home]# Проверил установлеy ли exepect [root@localhost login]# urpmi expect Пакет perl-Expect-1.21-3mdv2009.0.noarch уже установлен [root@localhost login]# И нехочет. поскажите куда копать? Вставить ник Quote
fox_m Posted June 1, 2009 Posted June 1, 2009 Дык expect в какой директории установлен? whereis expect Вставить ник Quote
Login_sbl Posted June 1, 2009 Author Posted June 1, 2009 Дык expect в какой директории установлен?whereis expect [root@localhost home]# whereis expect expect: [root@localhost home]# Вставить ник Quote
Belize Posted June 1, 2009 Posted June 1, 2009 Надо поставить вот это perl-Expect-1.21-3mdv2009.0.noarch - это модуль для Perl. Вставить ник Quote
Login_sbl Posted June 1, 2009 Author Posted June 1, 2009 Надо поставить вот этоperl-Expect-1.21-3mdv2009.0.noarch - это модуль для Perl. Спасибо!!! попробую и затем отпишусь. Вставить ник Quote
Login_sbl Posted June 1, 2009 Author Posted June 1, 2009 Надо поставить вот этоperl-Expect-1.21-3mdv2009.0.noarch - это модуль для Perl. Спасибо!!! попробую и затем отпишусь. [root@login home]# cat ./test_exp #!/usr/bin/expect spawn telnet 192.168.100.41 expect sername: {send login\r} sleep 3 expect assword: {send pass\r} sleep 3 send "show vlan" send "exit\r" expect eof[root@login home]# Теперь следующая проблемка: когда система вводит логин, то почему он проскакивает лишние символ в пароль. Непонятно откуда. и пароль естественно падает неправильный. кто знает как это обойти? коннектимся к 3526 Вставить ник Quote
Login_sbl Posted June 1, 2009 Author Posted June 1, 2009 причем повторяет первую букву логина. как бы её потереть? Вставить ник Quote
deep_admin Posted June 2, 2009 Posted June 2, 2009 Рабочий скрипт #!/usr/bin/expect -f set timeout -1 spawn telnet 192.168.1.100 match_max 100000 expect -exact "username:" send -- "admin\r" expect -exact "password:" send -- "mypassword\r" expect -exact "\r \r\r \rDES-3526:4#" send -- "dis cli\r" expect "*Success*" send -- "sh vlan\r" expect "*Total*" send -- "logout\r" expect eof exit Вставить ник Quote
Login_sbl Posted June 2, 2009 Author Posted June 2, 2009 Рабочий скрипт #!/usr/bin/expect -f set timeout -1 spawn telnet 192.168.1.100 match_max 100000 expect -exact "username:" send -- "admin\r" expect -exact "password:" send -- "mypassword\r" expect -exact "\r \r\r \rDES-3526:4#" send -- "dis cli\r" expect "*Success*" send -- "sh vlan\r" expect "*Total*" send -- "logout\r" expect eof exit Эх...всеравно дописывается в логине последняя буква. ТОесть пишет admin в логине, а на пассворд переносит еще букву "а" вот как я я проверил. [root@login home]# cat test_work #!/usr/bin/expect -f set timeout -1 spawn telnet 192.168.100.41 match_max 100000 expect -exact "Username:" send -- "login" --- здесь убрал \r expect -exact "Password:" send -- "test\r" expect -exact "\r \r\r #\rDES-3526:4#" #send -- "dis cli\r" #expect "*Success*" send -- "sh vlan\r" #expect "*Total*" send -- "logout\r" expect eof exit[root@login home]# а вот что на выходе: Username:loginl #Как видим дописывает букву l [1]+ Stopped ./test_work [root@login home]# кто-нить с этим сталкивался? Вставить ник Quote
fedoseevka Posted June 2, 2009 Posted June 2, 2009 под nixами х.з как а в виндовсе пользуюсь SecureCRT где для какждой сессии можно сделать свой профиль в том числе и автологин.В папке scripts лежан vbs-файлы где я меняю вместо mylogin и password свои значения.вот их примеры может вам поможет #$language = "VBScript" #$interface = "1.0" Sub main ' turn on synchronous mode so we don't miss any data crt.Screen.Synchronous = True ' Wait for a string that looks like "login: " or "Login: " ' Occasionally, a host needs to be kicked to display a ' login prompt. If (Not crt.Screen.WaitForString("ogin: ", 5)) Then crt.Screen.Send vbCr crt.Screen.WaitForString "ogin: " End If ' Send your username followed by a carriage return crt.Screen.Send "mylogin" & VbCr ' Wait for a tring that looks like "password: " or "Password: " crt.Screen.WaitForString "assword:" ' Send your password followed by a carriage return crt.Screen.Send "mypassword" & VbCr ' turn off synchronous mode for normal input processing crt.Screen.Synchronous = False End Sub #$language = "VBScript" #$interface = "1.0" Sub main Dim passwd ' turn on synchronous mode so we don't miss any data crt.Screen.Synchronous = True ' Wait for a string that looks like "login: " or "Login: " crt.Screen.WaitForString "ogin: " ' Send your username followed by a carriage return crt.Screen.Send "mylogin" & VbCr ' Wait for a tring that looks like "password: " or "Password: " crt.Screen.WaitForString "assword:" ' prompt the user for a password passwd = crt.Dialog.Prompt("Please enter your password:", "Enter Password", "", True) ' send the password and a carriage return crt.Screen.Send passwd & VbCr ' turn off synchronous mode to restore normal input processing crt.Screen.Synchronous = False End Sub #$language = "VBScript" #$interface = "1.0" Sub main ' turn on synchronous mode so we don't miss any data crt.Screen.Synchronous = True ' Wait for a string that looks like "login: " or "Login: " crt.Screen.WaitForString "ogin: " ' Send your username followed by a carriage return crt.Screen.Send "mylogin" & VbCr ' Wait for a tring that looks like "password: " or "Password: " crt.Screen.WaitForString "assword:" ' Send your password followed by a carriage return crt.Screen.Send "mypassword" & VbCr ' turn off synchronous mode to restore normal input processing crt.Screen.Synchronous = False End Sub Вставить ник Quote
Deac Posted June 9, 2009 Posted June 9, 2009 (edited) нарыл где-то в нете скриптик#!/usr/bin/expect spawn telnet 192.168.100.100 expect ogin {send luser\r} expect assword {send TopSecret\r} send "show vlan\r" send "exit\r" expect eof -------------------------------------------------- Вот что пишет при запуске [root@localhost home]# ./test_exp bash: ./test_exp: /usr/bin/expect: bad interpreter: Нет такого файла или каталога [root@localhost home]# Проверил установлеy ли exepect [root@localhost login]# urpmi expect Пакет perl-Expect-1.21-3mdv2009.0.noarch уже установлен [root@localhost login]# И нехочет. поскажите куда копать? Юзай p5-Net-Telnet или p5-Net-Telnet-Cisco соответственно. cat MyTelnet.pl #!/usr/bin/perl $ok = new Net::Telnet ( Host => $ARGV[0], Port => $ARGV[1]t, Timeout => 10 ); # Здесь нужно попробовать mode 0 и mode 1 $ok->binmode(1); # Здесь ждём приглашения к вводу логина $ok->waitfor('/Username:.*$/i'); $ok->print($ARGV[2]); # Здесь ждём приглашения к вводу пароля $ok->waitfor('/Password:.*$/i'); $ok->print($ARGV[3]); # Здесь делаем всё что нам от консоли требуется $ok->waitfor('/\[].*$/i'); $ok->print('blablabla'); $ok->print('albalbalb'); # Даём команду на выход, здесь exit $ok->print('exit'); # EOF by Deac Запускаем ./MyTelnet.pl Host Port Login Passwwd Edited June 9, 2009 by Deac Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.