我正在尝试在bash脚本的输出中组合两个列表。一个列表是机器名称列表。另一个列表是IP地址列表。然后它输出它是否可以telnet到端口3389上的IP.它正在清点哪个Windows机器正在该端口上响应。
以下是我提出的建议:
#!/bin/bash
file1="machine_list.txt"
file2="ip_list.txt"
HOSTS=$(cat "$file1")
IP=$(cat "$file2")
for h in $HOSTS
do
for i in $IP
do
echo "checking RDP port on host: $h"
/usr/bin/telnet $i 3389
echo
sleep 2
done
done
成功连接的输出应如下所示:
checking RDP port on host: USAMZADP3000
Trying 10.1.233.65...
Connected to 10.1.233.65.
Escape character is '^]'
但它真正做的是循环相同的机器名称并为同一机器名称提供不同的IP地址。我希望机器名称和IP地址准确并且具有1比1的相关性。
我做错了什么?我怎样才能得到我想要的结果?
答案 0 :(得分:2)
看起来您想要并行读取这两个文件。由于您的循环是嵌套的,因此您的代码将获取一个计算机名称,然后读取整个IP文件,然后获取第二个计算机名称并读取整个IP文件等。您可以使用一个{{1}同时读取这两个文件}循环。
while
您可能会发现此related question有用。