라우터에서 재부팅해야 하는 모뎀이 있습니다. 모뎀은 텔넷만 허용하며 웹 GUI를 갖추고 있습니다. 라우터에서 원격으로 수동으로 로그인하면 문제 없이 모뎀을 다시 시작할 수 있습니다.
그러나 라우터에서 다음 명령을 실행하려고 하면:
(sleep 1; echo usr; sleep 1; echo pwd; sleep 5; echo reboot; ) | telnet 192.168.0.1
로그인하면 #
라우터에 프롬프트가 표시되지만 세 번째 명령은 실행되지 않습니다. 내가 뭘 잘못했나요?
테스트 목적으로:
ls
대신 다시 시작을 사용해 보았습니다 .sleep
길이를 바꿔보았어요- 라우터 대신 Raspberry Pi를 사용해 보았습니다.
그러나 텔넷을 사용하여 로그인한 후에는 모뎀이 명령을 수락하거나 실행하도록 할 수 없습니다.
사용할 수 있는 것이 없습니다 expect
. 라우터의 sh
스크립트가 이미 여러 가지 작업을 수행하고 있으므로 라우터의 스크립트를 사용하여 문제를 해결하는 것을 선호합니다 .
답변1
나는 너무 빨랐다. 이는 다음에 적용됩니다:
(sleep 1; echo usr; sleep 1; echo pwd; sleep 1; echo ls; sleep 1; ) | telnet 192.168.0.1
답변2
세션이 닫히기 전에 라우터가 명령을 실행할 sleep
시간을 갖도록 후행 시간이 필요합니다 . 2초를 권장하지만 상황에 따라 조정이 필요할 수도 있습니다.reboot
telnet
이 시도
( s(){sleep "${1:-1}";}; s; echo usr; s; echo pwd; s; echo reboot; s 2 ) | telnet 192.168.0.1