스크립트에 다른 루프를 추가해야 합니다.

스크립트에 다른 루프를 추가해야 합니다.

다음 명령을 실행 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

관련 정보