无法发送密码和用户名

无法发送密码和用户名

telnet 后无法发送 root 和密码。为什么?

telnet board
sleep 3
echo -e "root\n"
sleep 1
echo -e "labrat\n"

答案1

您不能使用“简单”的 bash 脚本与telnet会话进行交互。

根据@Melebius 的评论,答案在 StackOverflow 上回答这个问题提出一些解决方案,例如使用预计。作为更简单的替代方法,您可以通过管道发送命令 telnet

{ sleep 3 ; echo "root" ; sleep 1 ; echo "labrat" ; sleep 1; } | telnet board

请记住,这样 telnet 会话在输入处理后很快就会终止。如果你想创建一个自动化脚本,它可能就足够了(但expect仍然是更好的方法)。

根据评论进行编辑

如果你想打开一个交互的 telnet会话,但省去了每次输入用户名和密码的“麻烦”,恐怕没有简单的解决方案。您可以通过标志-l(即telnet -l root board)传递用户名,因此您只需输入密码。

看起来expect可以成功用于自动化 telnet 登录,同时通过interact指令留下交互式提示。

一个简单的例子是:

#!/usr/bin/expect

spawn telnet board
sleep .3;
expect "login:"
send "root\r"
expect "password:"
send "labrat\r";
interact

只需根据您的需要进行编辑即可。

答案2

我不确定这是否是问题的原因(我自己从未使用过 telnet),但echo在打印时已经添加了换行符,因此echo -e "root\n"将打印root两个换行符。您可能只需要一个,因此请使用echo "root"printf 'root\n'

相关内容