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