입력 파일을 읽고 각 라인에서 작업하는 방법

입력 파일을 읽고 각 라인에서 작업하는 방법

IP 주소와 문자열 줄로 구성된 입력 파일이 있는 경우, 각 줄을 어떻게 반복하고 IP 주소와 문자열을 사용하여 명령을 실행합니까? 각 줄에 대해 실행하려는 명령의 예는 다음과 같습니다.

ssh [email protected] cat /etc/component10/version | grep 'Version\|Project' >> /tmp/component_ver.txt

비밀번호가 필요하지 않다고 가정합니다. "...(yes/no)?"라는 질문에 "yes"라고 답할 수 있을 만큼 강력한 스크립트를 만들고 싶습니다. 로그인할 때 메시지가 표시되었습니다.

입력 파일 예:

192.168.0.10 component10  
192.168.0.20 component20  
192.168.0.30 component30  

답변1

다음 코드는 원하는 작업을 수행합니다.

while read -r server _; do ssh -n -o StrictHostKeyChecking=no root@"$server" "grep -E 'Version|Project' /etc/component10/version" >> /tmp/component_ver.txt; done < serverfile

답변2

cat INPUT|while read host component; do 
ssh -o StrictHostKeyChecking=no user@$host cat /etc/$component/version | grep 'Version\|Project' >> /tmp/component_ver.txt
done

관련 정보