无需spawn / expect / send命令自动执行Telnet

时间:2012-03-16 10:18:00

标签: unix login automation sleep telnet

之前我确实问过这个问题,但由于问题含糊不清,该线程已经关闭。所以这是尝试#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;,那么在输入用户名和密码后它也会断开连接。

2 个答案:

答案 0 :(得分:0)

一般来说:

cmd | cmd2 << EOF
EOF

定义不明确。 (我不确定shell语法是否将其定义为未定义,或实现定义,或者什么,但它肯定不会做你想要的。)cmd2只能有一个输入源,但你试图给它从管道和heredoc输入。你需要选一个。也许你可以试试:

{ cmd1; cat << EOF; } | cmd2
input 
EOF

但是这很混乱,你最好编写一个脚本来生成所需的输入。

答案 1 :(得分:0)

如果您不限于shell脚本。 Python有一个 telnet interface在其标准库中。实际上,库文档页面上给出的示例非常接近您想要的内容。

Python可能不像shell那样普遍存在,但它被广泛部署和使用。

相关问题