我需要在两个嵌入式Linux目标之间使用客户端上的BusyBox v1.22.1和主机上的BusyBox v1.10.3之间的自动telnet脚本。注意:此系统不提供Expect。我已经尝试了here建议而没有成功。例如,这个
host=1.1.1.2
port=23 # note - port is not required
pass=xxxx # note - pass is not required
cmd1=24
( echo open ${host} ${port}
sleep 1
echo -e "\r"
sleep 1
echo ${pass}
sleep 1
echo -e "\r"
sleep 1
echo ${cmd1}
sleep 1
echo -e "\r"
sleep 1
echo exit ) | telnet
返回此
Usage: telnet [-a] [-l USER] HOST [PORT]
Connect to telnet server
-a Automatic login with $USER variable
-l USER Automatic login as USER
所以我尝试了各种组合使用' (上图)没有成功(它总是要求手动输入'登录')。
在BusyBox v1.22.1上telnet自动登录是否被破坏,或者我只是遗漏了一些简单的东西?
答案 0 :(得分:1)
最终使用我指出的原始示例使其工作。令人困惑的部分是telnet会话退出而没有退出命令在最后")"。此外,telnet会话期间没有任何命令阻塞,因此每个命令的睡眠时间必须足够长。在这种情况下,'用户'是root,没有密码。我可能需要插入一些echo -e "\r"
,但这是将合并到脚本中的工作命令:
( echo -e "\r"
sleep 1
echo root
sleep 2
echo ${cmd1}
sleep 65
echo ${cmd2}
sleep 2
echo ${cmd3}
sleep 52 ) | telnet $host