URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8113
[ Назад ]

Исходное сообщение
"telnet в автоматическом режиме"

Отправлено nastr , 26-Фев-09 14:36 
Нужно написать скрипт который в автоматическом режиме заходил бы по telnet на удалённый компьютер и выполнял какие-то действия (запускал скрипты).
Сейчас использую для этого Perl'овый скрипт, но писал его не я, и разобраться в нём не могу..
Хотелось бы написать shell'овский скрипт для этого.
Думаю это должно быть что-то на подобии:
HOST='192.168.1.1'
USER='root'
PASSWD='pass'
telnet $HOST <<EOF
$USER
$PASSWD
cd /usr/
ls
EOF

Содержание

Сообщения в этом обсуждении
"telnet в автоматическом режиме"
Отправлено Andrey Mitrofanov , 26-Фев-09 14:59 
>Думаю это должно быть что-то на подобии:
>HOST='192.168.1.1'
>USER='root'
>PASSWD='pass'
>telnet $HOST <<EOF
>$USER
>$PASSWD
>cd /usr/
>ls
>EOF

Во-первых, не факт, что твои $USER/$PASSWD "возьмутся" со stdin-а...
Во-вторых, exit или logout в конце добавь.
В-третьих, с каким-нибудь ssh (у которого логин+пасс, вроде, можно в ком.строке передать) - может и прокатить... в простейшем случае... а может и не. У ssh-таки есть передача _команды_ прямо из ком.строки (в т.ч. - и строку-скрипт на шеле).
В-четвёртых, expect (поиск -- выше; с perl-ом разбираться не надо, но :) надо разбираться с tcl).
В-пятых, можно ещё костыли типа такого посооружать:
(sleep 2; echo "command"; sleep 5; echo "command2"; sleep 5; echo "exit")|telnet ...

В поиске expect-а по форуму -- ещё больше вариантов, направлений движения.


"telnet в автоматическом режиме"
Отправлено nastr , 26-Фев-09 15:10 
tcl рассматривал, но на удалённой машине нет ни tcl ни ssh..
Такая конструкция не работает, аналог для shell я пока не придумал..
telnet 192.168.1.1 <<EOF
root
pass
cd /usr/
ls
exit
EOF
пишет:
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
Connection closed by foreign host.

"telnet в автоматическом режиме"
Отправлено Andrey Mitrofanov , 26-Фев-09 15:12 
>tcl рассматривал, но на удалённой машине нет ни tcl ни ssh..

На tcl-е написан expect. Он нужен на "этой" стороне. Идите и читайте...


"telnet в автоматическом режиме"
Отправлено shutdown now , 26-Фев-09 22:07 
на перл можно - http://www.opennet.me/base/dev/perl_net_telnet.txt.html он, в отличии от tcl, почти всегда есть

"telnet в автоматическом режиме"
Отправлено gaa , 26-Фев-09 22:47 
Используй rsh или ssh. В обоих можно настроить беспарольный вход.
Потом будешь вызывать команды удалённо в таком виде:

ssh user@host command arg1 arg2 arg3

Например:

ssh user@host ls /etc/init.d


"telnet в автоматическом режиме"
Отправлено nastr , 27-Фев-09 10:08 
>Используй rsh или ssh. В обоих можно настроить беспарольный вход.
>Потом будешь вызывать команды удалённо в таком виде:
>
>ssh user@host command arg1 arg2 arg3
>
>Например:
>
>ssh user@host ls /etc/init.d

Проблема в том что на удалённой машине я не могу ничего менять!


"telnet в автоматическом режиме"
Отправлено vic , 27-Фев-09 10:47 
>Проблема в том что на удалённой машине я не могу ничего менять!

запрет административный или технический?
если административный, то пинать админа до потери его пульса, пусть ставить ssh, телнет давно уже считается плохим путем.



"telnet в автоматическом режиме"
Отправлено gaa , 27-Фев-09 11:10 
> Проблема в том что на удалённой машине я не могу ничего менять!

Тогда учи expect. Но всё-таки лучше поставить ssh.



"telnet в автоматическом режиме"
Отправлено Sphynkx , 05-Мрт-09 02:48 
Empty спасет отца Русской демократии!! ;-))
http://sourceforge.net/projects/empty
http://www.opennet.me/base/dev/interactive_tools.txt.html