我有一个类似下面的文本文件,其中host
,site
和{
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
当尝试使用telnet时,您需要运行类似expect的东西。Telnet获取终端io。Expect用伪终端替换终端,并允许您编写输入和输出脚本。在
相关问题 更多 >
编程相关推荐