スクリプトで2番目の列をリンクする方法を知っておくと便利です。現在、次のforループを使用しています。
for i in cat server
do
echo ===$i====
ssh -q $i 'netstat -tulpun | egrep '22|13''
done
ポートが異なる複数のサーバー。たとえば、下の最初の列にはサーバーがあり、2番目の列にはポートがあります。
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
これら2つの値をforループに割り当てるだけですi
。これは可能ですが、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
仮定:
- 各行には、正確に2つのスペースで区切られた項目があります。
- 2番目のエントリは有効なポート番号です。