之前我确实问过这个问题,但由于问题含糊不清,该线程已经关闭。所以这是尝试#2:
我希望有一个简单的脚本通过telnet连接到远程计算机,然后执行命令ZAHO,然后将输出存储在本地计算机上的文件cat.txt
中。这是我试过的代码:
(echo "PPATIL"; sleep 1 ; echo "IDEA@2010" ; sleep 1;) |telnet 10.110.3.132 23<< EOF
ZAHO; > cat.txt
EOF
运行脚本时会发生以下情况:
尝试10.110.3.132 ...... 连接到10.110.3.132。 逃脱角色是'^]'
在此之后,我回到我的shell提示,没有发生任何事情。
现在,即使我提供了错误的密码,我仍然会收到相同的错误。
P.S。:spawn / expect / send不存在,只有通过telnet登录的选项。
我也试过这个
(echo "PPATIL"; sleep 1 ; echo "IDEA@2010" ; sleep 1;echo "ZAHO;";) |telnet 10.110.3.132 23
然而,在这种情况下,远程机器连接,它显示用户名提示,输入用户名,然后显示密码提示,然后输入密码,睡眠一秒,然后附加“ZAHO”;密码,并断开连接。
如果我删除了echo ZAHO;
,那么在输入用户名和密码后它也会断开连接。
答案 0 :(得分:0)
一般来说:
cmd | cmd2 << EOF
EOF
定义不明确。 (我不确定shell语法是否将其定义为未定义,或实现定义,或者什么,但它肯定不会做你想要的。)cmd2只能有一个输入源,但你试图给它从管道和heredoc输入。你需要选一个。也许你可以试试:
{ cmd1; cat << EOF; } | cmd2
input
EOF
但是这很混乱,你最好编写一个脚本来生成所需的输入。
答案 1 :(得分:0)
如果您不限于shell脚本。 Python有一个 telnet interface在其标准库中。实际上,库文档页面上给出的示例非常接近您想要的内容。
Python可能不像shell那样普遍存在,但它被广泛部署和使用。