从文件中获取详细信息并运行命令的脚本

从文件中获取详细信息并运行命令的脚本

了解如何连接脚本中的第二列将很有帮助。目前使用下面的 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

假设:

  • 每行中正好有两个空格分隔的条目,
  • 第二个条目是有效的端口号

相关内容