通过SSH对远程主机执行telnet命令进行端口检查,并将输出结果发送到fi

2024-06-26 11:03:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似下面的文本文件,其中hostsite和{}到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命令

例如文件中的第一行

^{pr2}$

然后

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进行检查

更新:

以下是我根据建议开发的脚本:

# /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

Tags: echotxtcomhostreadscanportsite
1条回答
网友
1楼 · 发布于 2024-06-26 11:03:14

当尝试使用telnet时,您需要运行类似expect的东西。Telnet获取终端io。Expect用伪终端替换终端,并允许您编写输入和输出脚本。在

相关问题 更多 >