2012-09-04 60 views
5

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

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

因此,使用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. 
> 
+0

你说“它不工作”,但_how_不工作?你会收到错误消息吗?怎么了? –

+0

你不觉得讽刺的是,你没有安全的原因安装某些东西,但你使用的是telnet而不是ssh? – gpojd

回答

11

一些你的命令可能会被丢弃。您可以使用普通脚本构造实现更好的控制,然后通过echo通过管道发送所需的命令。组命令的列表,使一个“会话”: -

{ 
sleep 5 
echo user 
sleep 3 
echo password 
sleep 3 
echo ls 
sleep 5 
echo exit 
} | telnet 172.16.65.209 
+4

+1或更好,然后切换到'nc'(Netcat),它比'telnet'更为神秘,它明显是专为交互式使用而设计的。 – tripleee

+0

谢谢!它工作完美。 – Keshav

+0

比使用expect更容易!谢谢! – NaturalBornCamper

-1

我有同样的问题。但是,至少在我的环境原来是在目标服务器上的SSL证书在一些被损坏方式和服务器团队照顾这个问题。现在

,我想要做的是找出如何让一个脚本来运行你上面正在做同样的事情,除了我希望它倾倒了完全相同的情况下入一个文件,然后当它遇到它实际连接的服务器时,我希望它提供转义字符(^])并继续到下一个服务器。