了解如何连接脚本中的第二列将很有帮助。目前使用下面的 for 循环
for i in cat server
do
echo ===$i====
ssh -q $i 'netstat -tulpun | egrep '22|13''
done
具有不同端口的多个服务器,例如下面是第一列中的服务器和第二列中的端口
Jan 113
Feb 114
Mar 115
Apr 116
May 117
答案1
你应该从以下开始:
#!/bin/bash
cat server | while read str
do
server=$(echo "$str" | cut -d' ' -f 1)
port=$(echo "$str" | cut -d' ' -f 2)
echo server: "$server" port: "$port"
ssh -q "$server" 'netstat | grep -E "'"$port"'"'
done
假设调用带有服务器端口对的文件server
,然后使用您的ssh
命令扩展该文件。
只是cat server
将这两个值分配给i
您的 for 循环,您可以这样做for i in $(cat server)
,但这不会像上面的示例那样为您提供行,而且在我看来,将行上的值拆分比在连续 ( for
)中组合多个值更容易循环段落。
答案2
假设您的意思是for i in $(cat server) ...
,考虑使用while read
循环:
while read host port
do
echo ===$host====
ssh -q "$host" 'netstat -tulpun | egrep "'"$port"'"'
done < server
假设:
- 每行中正好有两个空格分隔的条目,
- 第二个条目是有效的端口号