スクリプトに別のループを追加する必要があります。

スクリプトに別のループを追加する必要があります。

次のコマンドを実行しnetstat -tulpun | grep -i port_from_the_list、結果を得るスクリプトのリストに記載されて
いるすべてのサーバーで2つのコマンドを実行する必要があります。

server: Jan port: 8000  
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 1505/httpd  

server: feb port: 8000  
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 1505/httpd    
  1. サーバーにログイン
  2. netstatプロセスID出力を提供する最初のコマンドを実行します。
  3. ps -ef | grep -i 1505 "processid"これを実行すると、プロセスID出力が得られ、コマンドが実行されます。ps

許可された出力

server: Jan port: 8000  
tcp   0 0 0.0.0.0:8000 0.0.0.0:*    LISTEN 1505/httpd  

root      1421 15033  0 13:38 pts/16   00:00:00 grep -i 1505  

server: feb port: 8000  
tcp   0 0 0.0.0.0:8000 0.0.0.0:*    LISTEN 1505/httpd  

root      1421 15033  0 13:38 pts/16   00:00:00 grep -i 1505  

netstatコマンド出力を読み込んで次のコマンドを実行することはできません。

while read -r -u10 server port line  
do  
echo ========== server: "$server" port: "$port" ==========  
ssh -qn "$server" "netstat -tulpun | grep -E \"\b$port\b\"" | awk '{print $7}' | grep "/" | awk -F "/" '{print $1}' | xargs -I % bash -c 'echo Port % && ps -ef | grep % && echo ' | grep -v grep
echo   
done 10< demo 

ベストアンサー1

から始めることができます

for port in $(cat demo); do
   mypid=$(netstat xxxx |
      grep ":${port} " | grep LISTEN | sed -e 's/.*LISTEN//'| cut -d/ -f1)
   ps -fp ${mypid}
done

可能な変更(おなじみの変更):

  • xargsを使ってpsを呼び出す
    ... -f1) | xargs ps -fp
  • 切断用sed/
  • whileループの使用
    cat demo | while read port; do

おすすめ記事