The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Net::Telnet  Вылетаю по таймауту"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Net::Telnet  Вылетаю по таймауту"  
Сообщение от Дмитрий email(??) on 04-Окт-06, 10:44 
Доброго времени суток!
Суть в общем такая, надо зайти на машину под рутом, но рута сразу не пускает, поэтому приходиться логинится пользователем, а потом выполнять комманду "su"
написал скрипт:
#!/usr/bin/perl
use Net::Telnet;
$t=new Net::Telnet(Timeout=>5, Dump_log=>"/tmp/dl_telnet.log");
$t->open("xx.xx.xx.xx");
$t->login(user, pass);
$t->cdm("su");
$t->waitfor(-match => '/Password:.*$/');
$t->print("su_pass");
...
...

и после строки $t->cmd("su"); вылетаю по тайм-ауту(command time-out at ./telnet_script line 6)

Кусок лога, после чего он обрывается:
< 0x00000: 5b 6e 70 6f  73 40 6b 61  73 73 65 31  20 6e 70 6f  [user@host_xxx use
< 0x00010: 73 5d 24 20                                         r]$

> 0x00000: 73 75 0a                                            su.

< 0x00000: 73                                                  s

< 0x00000: 75 0d 0a 50  61 73 73 77  6f 72 64 3a  20           u..Password:

Люди добрые, скажите плиз, что где не так я сделал, и как мне это исправить??

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Net::Telnet  Вылетаю по таймауту"  
Сообщение от chip email(ok) on 04-Окт-06, 12:40 
>Доброго времени суток!
>Суть в общем такая, надо зайти на машину под рутом, но рута
>сразу не пускает, поэтому приходиться логинится пользователем, а потом выполнять комманду
>"su"
>написал скрипт:
>#!/usr/bin/perl
>use Net::Telnet;
>$t=new Net::Telnet(Timeout=>5, Dump_log=>"/tmp/dl_telnet.log");
>$t->open("xx.xx.xx.xx");
>$t->login(user, pass);
>$t->cdm("su");
>$t->waitfor(-match => '/Password:.*$/');
>$t->print("su_pass");
>...
>...
>
>и после строки $t->cmd("su"); вылетаю по тайм-ауту(command time-out at ./telnet_script line 6)
>
>Кусок лога, после чего он обрывается:
>< 0x00000: 5b 6e 70 6f  73 40 6b 61  
>73 73 65 31  20 6e 70 6f  [user@host_xxx
>use
>< 0x00010: 73 5d 24 20      
>          
>          
>          
> r]$
>
>> 0x00000: 73 75 0a                                            su.
>
>< 0x00000: 73          
>          
>          
>          
>       s
>
>< 0x00000: 75 0d 0a 50  61 73 73 77  
>6f 72 64 3a  20      
>     u..Password:
>
>Люди добрые, скажите плиз, что где не так я сделал, и как
>мне это исправить??

su читает непосредственно с терминала.

Вариант решения:
убить telnet на корню и использовать ssh с RSA ключами.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Net::Telnet  Вылетаю по таймауту"  
Сообщение от chip email(ok) on 04-Окт-06, 12:41 
>>Доброго времени суток!
>>Суть в общем такая, надо зайти на машину под рутом, но рута
>>сразу не пускает, поэтому приходиться логинится пользователем, а потом выполнять комманду
>>"su"
>>написал скрипт:
>>#!/usr/bin/perl
>>use Net::Telnet;
>>$t=new Net::Telnet(Timeout=>5, Dump_log=>"/tmp/dl_telnet.log");
>>$t->open("xx.xx.xx.xx");
>>$t->login(user, pass);
>>$t->cdm("su");
>>$t->waitfor(-match => '/Password:.*$/');
>>$t->print("su_pass");
>>...
>>...
>>
>>и после строки $t->cmd("su"); вылетаю по тайм-ауту(command time-out at ./telnet_script line 6)
>>
>>Кусок лога, после чего он обрывается:
>>< 0x00000: 5b 6e 70 6f  73 40 6b 61  
>>73 73 65 31  20 6e 70 6f  [user@host_xxx
>>use
>>< 0x00010: 73 5d 24 20      
>>          
>>          
>>          
>> r]$
>>
>>> 0x00000: 73 75 0a                                            su.
>>
>>< 0x00000: 73          
>>          
>>          
>>          
>>       s
>>
>>< 0x00000: 75 0d 0a 50  61 73 73 77  
>>6f 72 64 3a  20      
>>     u..Password:
>>
>>Люди добрые, скажите плиз, что где не так я сделал, и как
>>мне это исправить??
>
>su читает непосредственно с терминала.
>
>Вариант решения:
>убить telnet на корню и использовать ssh с RSA ключами.

++ sudo, разумеется.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Net::Telnet  Вылетаю по таймауту"  
Сообщение от Дмитрий email(??) on 04-Окт-06, 13:32 
>>>Доброго времени суток!
>>>Суть в общем такая, надо зайти на машину под рутом, но рута
>>>сразу не пускает, поэтому приходиться логинится пользователем, а потом выполнять комманду
>>>"su"
>>>написал скрипт:
>>>#!/usr/bin/perl
>>>use Net::Telnet;
>>>$t=new Net::Telnet(Timeout=>5, Dump_log=>"/tmp/dl_telnet.log");
>>>$t->open("xx.xx.xx.xx");
>>>$t->login(user, pass);
>>>$t->cdm("su");
>>>$t->waitfor(-match => '/Password:.*$/');
>>>$t->print("su_pass");
>>>...
>>>...
>>>
>>>и после строки $t->cmd("su"); вылетаю по тайм-ауту(command time-out at ./telnet_script line 6)
>>>
>>>Кусок лога, после чего он обрывается:
>>>< 0x00000: 5b 6e 70 6f  73 40 6b 61  
>>>73 73 65 31  20 6e 70 6f  [user@host_xxx
>>>use
>>>< 0x00010: 73 5d 24 20      
>>>          
>>>          
>>>          
>>> r]$
>>>
>>>> 0x00000: 73 75 0a                                            su.
>>>
>>>< 0x00000: 73          
>>>          
>>>          
>>>          
>>>       s
>>>
>>>< 0x00000: 75 0d 0a 50  61 73 73 77  
>>>6f 72 64 3a  20      
>>>     u..Password:
>>>
>>>Люди добрые, скажите плиз, что где не так я сделал, и как
>>>мне это исправить??
>>
>>su читает непосредственно с терминала.
>>
>>Вариант решения:
>>убить telnet на корню и использовать ssh с RSA ключами.
>
>++ sudo, разумеется.

Спасибо, а тоя уже всю голову сломал...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Net::Telnet  Вылетаю по таймауту"  
Сообщение от NuINu (??) on 05-Окт-06, 14:16 
>>su читает непосредственно с терминала.
неверно!!!!
su выводит на терминал!!!
посему твоя прога и неможет дождаться приглашения ввести пароль.
вот можно так:
#!/usr/bin/perl
use Net::Telnet;

my ($user, $passw, $root_pwd);

$user="aaaaaa";
$passw="aaaaaa";
$root_pwd="aaaaaaaaaaaaa";

$t=new Net::Telnet(Timeout=>5, Dump_log=>"/tmp/dl_telnet.log");
$t->open("127.0.0.1");
$t->login($user, $passw);
$t->put("su\n");
#$ok=$t->waitfor('/assword:/');
my $ok = 1;
#sleep(1);
if($ok) {$t->put("$root_pwd\n");}
my @lines = $t->cmd("who");
print "@lines\n";

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Net::Telnet  Вылетаю по таймауту"  
Сообщение от NuINu (??) on 05-Окт-06, 14:34 
>>>su читает непосредственно с терминала.
>неверно!!!!
>su выводит на терминал!!!
>посему твоя прога и неможет дождаться приглашения ввести пароль.
>

блин, эк это я СОВРАЛ!!! ;-)))
вообщем вот: (работает тоже)
#!/usr/bin/perl
use Net::Telnet;

my ($user, $passw, $root_pwd);

$user="";
$passw="";
$root_pwd="";

$t=new Net::Telnet(Timeout=>5, Dump_log=>"/tmp/dl_telnet.log");
$t->open("127.0.0.1");
$t->login($user, $passw);
$t->put("su\n");
my $ok=$t->waitfor('/assword:/');
#my $ok = 1;
#sleep(1);
if($ok) {$t->put("$root_pwd\n");}
my @lines = $t->cmd("who");
print "@lines\n";

это просто первоначальный вариант у меня не работал, потому что я перевод строки в су забыл поставить ;-))) а щас вспомнил поставил и все работает...

так что зря вы это на су бочку катите.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Net::Telnet  Вылетаю по таймауту"  
Сообщение от Дмитрий email(??) on 05-Окт-06, 16:58 
>>>>su читает непосредственно с терминала.
>>неверно!!!!
>>su выводит на терминал!!!
>>посему твоя прога и неможет дождаться приглашения ввести пароль.
>>
>
>блин, эк это я СОВРАЛ!!! ;-)))
>вообщем вот: (работает тоже)
>#!/usr/bin/perl
>use Net::Telnet;
>
>my ($user, $passw, $root_pwd);
>
>$user="";
>$passw="";
>$root_pwd="";
>
>$t=new Net::Telnet(Timeout=>5, Dump_log=>"/tmp/dl_telnet.log");
>$t->open("127.0.0.1");
>$t->login($user, $passw);
>$t->put("su\n");
>my $ok=$t->waitfor('/assword:/');
>#my $ok = 1;
>#sleep(1);
>if($ok) {$t->put("$root_pwd\n");}
>my @lines = $t->cmd("who");
>print "@lines\n";
>
>это просто первоначальный вариант у меня не работал, потому что я перевод
>строки в су забыл поставить ;-))) а щас вспомнил поставил и
>все работает...
>
>так что зря вы это на су бочку катите.


Cпасиб, очень выручил. А то я уже заморочелся с net:ssh... а оказывается все проще

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Net::Telnet  Вылетаю по таймауту"  
Сообщение от NuINu (??) on 06-Окт-06, 16:26 
>Cпасиб, очень выручил. А то я уже заморочелся с net:ssh... а оказывается
>все проще

читай Линкольн, Штайн Разработка сетевых программ на Перл. ;-))) страница 175

выдержка:

my $ssh = do_cmd('ssh', "-l $user", $host);
my $t   = Net::Telnet-new(Fhopen => $ssh);

и далее по тексту ;-)) см выше, и некакого Net::ssh ненадо.

а так читайте код Нет:: телнета и узнаешь чего же он ждет, я в свое время почитал, правда щас забыл уже ;-)), короче ждет он некоего приглашения и пока оно не выведется операция cmd не завершиться, поэтому все и вылетает по тайм ауту....

блин можно еще проверить так cmd("su\n$root_pw\n") - может сработает?!!??

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру