скрипту необходимо добавить еще один цикл

скрипт, который запускает netstat -tulpun | grep -i port_from_the_list 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 которая дает результат идентификатора процесса
  3. ps -ef | grep -i 1505 "processid" ps -ef | grep -i 1505 "processid" работает, он будет принимать этот идентификатор процесса и запустить команду 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 

Вы можете начать с

 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