我试图查看是否为主机名/IP 列表打开了一个端口,并且我使用了一个像这样的简单脚本来 ssh 到每个主机并捕获输出。
for i in `cat $1`
do ssh $i "sleep 5 | telnet 11.22.33.44 123"
done
这是抛出一个“No environment-specific terminal time”错误,因为 Telnet 被设计成一个与智能终端交互的交互工具。
知道我不能使用nc
命令,因为它在 Unix AIX 系统上不可用,我该如何解决这个问题?
请注意,一些主机会回复 ,Connected to 11.22.33.44. Escape character is ^]
这意味着有连接,而其他主机会冻结,Trying ...
这意味着没有连接。
由于默认安装了 perl,一种方法是通过 ssh 连接到中间主机并要求它运行 perl,perl 程序作为此处文档提供:
该脚本尝试通过 TCP 连接到给定的 IP 和端口;如果失败,您将收到
Failed
消息,但如果成功,它会立即关闭连接并打印Success
. 这使用$(< ...)
语法从第一个参数给定的文件名中读取;就像 一样cat
,此方案假定所有文件名中都没有任何字符$IFS
(默认为空格、制表符或换行符)。我还引用了循环变量(此处为host
),以防止在任何输入文件内容包含 shell 通配字符(如*
、?
或)时出现问题[
。