6

如何在 shell 脚本中运行 telnet 并在远程服务器上执行命令?

由于安全原因,我没有在我的 Solaris 机器上安装 expect。我也没有net::telnet安装 perl 模块。

那么如果不使用 expect 和 perl 我该怎么做呢?

我尝试了下面的事情,但它不起作用。

#!/usr/bin/sh
telnet 172.16.69.116 <<!
user
password
ls
exit
!

当我执行它时,这就是我得到的:

> cat tel.sh
telnet 172.16.69.116 <<EOF
xxxxxx
xxxxxxxxx
ls
exit
EOF
> tel.sh
Trying 172.16.69.116...
Connected to 172.16.69.116.
Escape character is '^]'.
Connection to 172.16.69.116 closed by foreign host.
> 
4

2 回答 2

12

您的某些命令可能会被丢弃。您可以使用普通脚本结构实现更精细的控制,然后通过带有echo. 将命令列表分组以创建一个“会话”:-

{
sleep 5
echo user
sleep 3
echo password
sleep 3
echo ls
sleep 5
echo exit
} | telnet 172.16.65.209
于 2012-09-04T13:11:57.133 回答
-1

我遇到了同样的问题……但是,至少在我的环境中,结果证明目标服务器上的 SSL 证书以某种方式损坏,服务器团队解决了这个问题。

现在,我要做的是弄清楚如何让脚本运行你在上面做的完全相同的事情,除了我希望它把上面完全相同的场景转储到一个文件中,然后当它遇到一个它实际连接的服务器,我希望它提供转义字符(^])并继续到下一个服务器。

于 2017-07-20T21:54:04.037 回答