Eu fui muito rápido. Trabalha com:
(sleep 1; echo usr; sleep 1; echo pwd; sleep 1; echo ls; sleep 1; ) | telnet 192.168.0.1
Eu tenho um modem que preciso reinicializar de um roteador. Um modem aceita apenas o telnet e possui uma GUI da Web. Se eu telnet do roteador manualmente, eu posso reiniciar o modem sem nenhum problema.
Mas quando tento emitir o seguinte no roteador:
(sleep 1; echo usr; sleep 1; echo pwd; sleep 5; echo reboot; ) | telnet 192.168.0.1
ele irá me logar, mostre um prompt #
no roteador, mas ele nunca fará o terceiro comando. O que estou fazendo de errado?
Para fins de teste:
ls
instad de reboot sleep
lengths mas nunca consigo um modem aceitar e / ou executar qualquer comando após um login usando o telnet dessa maneira.
Eu não tenho expect
disponível. Eu preferiria resolvê-lo usando o script sh
do roteador já que ele faz várias coisas lá.
Eu fui muito rápido. Trabalha com:
(sleep 1; echo usr; sleep 1; echo pwd; sleep 1; echo ls; sleep 1; ) | telnet 192.168.0.1
Você precisa de um sleep
à direita para permitir que o horário do roteador execute o comando reboot
antes que a sessão telnet
seja fechada. Eu sugeriria dois segundos, mas você pode precisar ajustar isso para sua situação.
Tente isso
( s(){sleep "${1:-1}";}; s; echo usr; s; echo pwd; s; echo reboot; s 2 ) | telnet 192.168.0.1