我有一个类似下面的文本文件host
,site
和port
来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
答案 0 :(得分:1)
当尝试使用telnet时,你需要运行像expect这样的东西。 Telnet抓住终端io。 Expect用伪终端替换终端,允许您编写输入和输出脚本。