Нужно написать скрипт который в автоматическом режиме заходил бы по telnet на удалённый компьютер и выполнял какие-то действия (запускал скрипты).
Сейчас использую для этого Perl'овый скрипт, но писал его не я, и разобраться в нём не могу..
Хотелось бы написать shell'овский скрипт для этого.
Думаю это должно быть что-то на подобии:
HOST='192.168.1.1'
USER='root'
PASSWD='pass'
telnet $HOST <<EOF
$USER
$PASSWD
cd /usr/
ls
EOF
>Думаю это должно быть что-то на подобии:
>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-а по форуму -- ещё больше вариантов, направлений движения.
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.
>tcl рассматривал, но на удалённой машине нет ни tcl ни ssh..На tcl-е написан expect. Он нужен на "этой" стороне. Идите и читайте...
на перл можно - http://www.opennet.me/base/dev/perl_net_telnet.txt.html он, в отличии от tcl, почти всегда есть
Используй rsh или ssh. В обоих можно настроить беспарольный вход.
Потом будешь вызывать команды удалённо в таком виде:ssh user@host command arg1 arg2 arg3
Например:
ssh user@host ls /etc/init.d
>Используй rsh или ssh. В обоих можно настроить беспарольный вход.
>Потом будешь вызывать команды удалённо в таком виде:
>
>ssh user@host command arg1 arg2 arg3
>
>Например:
>
>ssh user@host ls /etc/init.dПроблема в том что на удалённой машине я не могу ничего менять!
>Проблема в том что на удалённой машине я не могу ничего менять!запрет административный или технический?
если административный, то пинать админа до потери его пульса, пусть ставить ssh, телнет давно уже считается плохим путем.
> Проблема в том что на удалённой машине я не могу ничего менять!Тогда учи expect. Но всё-таки лучше поставить ssh.
Empty спасет отца Русской демократии!! ;-))
http://sourceforge.net/projects/empty
http://www.opennet.me/base/dev/interactive_tools.txt.html