执行telnet命令,通过SSH端口检查远程主机,并将输出输出到文件

时间:2017-02-01 21:58:08

标签: python bash shell awk grep

我有一个类似下面的文本文件hostsiteport来telnet

      Hostname                site                  port
appwlsqa02.comp.xxx.com fgh-fst13-scan.comp.xxx.com 1521
appwlsqa03.comp.xxx.com fgh-fst23-scan.comp.xxx.com 1521
cappwlsqa01.comp.xxx.com fgh-fst13-scan.comp.xxx.com 1521

我的目标是ssh每个hostname并执行telnet命令

例如,文件中的第一行

ssh appwlsqa02.comp.xxx.com 

然后,

telnet fgh-fst13-scan.comp.xxx.com  1521

我在下面尝试过:

while read HOST site port ; do ssh $HOST "echo exit | telnet $site $port " < /dev/null; done < text.txt`

我必须将hostnames作为一个变量$HOST阅读,并将托管为$site并将其设为$port

更新

这是我根据sugegstions开发的脚本:

# /bin/bash
while read HOST site port ; 
do
echo $HOST $site $port  
ssh -n $HOST "telnet $site $port | grep "Connected" " >> t.txt &
PID=$!
sleep 2 
kill "$PID"

if [ -s t.txt ]
then
echo from $HOST to  $site $port is open >> succ.txt
else
echo from $HOST to  $site $port is closed >> fail.txt
fi
rm t.txt
done < text.txt

1 个答案:

答案 0 :(得分:1)

当尝试使用telnet时,你需要运行像expect这样的东西。 Telnet抓住终端io。 Expect用伪终端替换终端,允许您编写输入和输出脚本。