파일에서 세부 정보를 가져오고 명령을 실행하는 스크립트

파일에서 세부 정보를 가져오고 명령을 실행하는 스크립트

스크립트에서 두 번째 열을 연결하는 방법을 아는 것이 도움이 될 것입니다. 현재 다음 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이 두 값을 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

가정:

  • 각 줄에는 정확히 두 개의 공백으로 구분된 항목이 있습니다.
  • 두 번째 항목은 유효한 포트 번호입니다.

관련 정보