Jump to content
Калькуляторы

Telnet--автологин помогите со скриптиком

нарыл где-то в нете скриптик

#!/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]#

 

И нехочет.

поскажите куда копать?

Share this post


Link to post
Share on other sites

Дык expect в какой директории установлен?

whereis expect

Share this post


Link to post
Share on other sites
Дык expect в какой директории установлен?
whereis expect

[root@localhost home]# whereis expect

expect:

[root@localhost home]#

 

Share this post


Link to post
Share on other sites

Надо поставить вот это

perl-Expect-1.21-3mdv2009.0.noarch - это модуль для Perl.

 

Share this post


Link to post
Share on other sites
Надо поставить вот это

perl-Expect-1.21-3mdv2009.0.noarch - это модуль для Perl.

Спасибо!!! попробую и затем отпишусь.

Share this post


Link to post
Share on other sites
Надо поставить вот это

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

Share this post


Link to post
Share on other sites

причем повторяет первую букву логина. как бы её потереть?

Share this post


Link to post
Share on other sites

Рабочий скрипт

#!/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

 

Share this post


Link to post
Share on other sites
Рабочий скрипт

#!/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]#

 

 

кто-нить с этим сталкивался?

 

Share this post


Link to post
Share on other sites

под 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

 

 

Share this post


Link to post
Share on other sites
нарыл где-то в нете скриптик

#!/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 by Deac

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this