스크립트에서 두 번째 열을 연결하는 방법을 아는 것이 도움이 될 것입니다. 현재 다음 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
가정:
- 각 줄에는 정확히 두 개의 공백으로 구분된 항목이 있습니다.
- 두 번째 항목은 유효한 포트 번호입니다.