여러 컴퓨터에서 명령을 실행하고 해당 IP 주소를 인쇄합니다.

여러 컴퓨터에서 명령을 실행하고 해당 IP 주소를 인쇄합니다.

요새 머신의 여러 머신에서 동일한 grep 명령을 실행하고 있습니다. grep 결과 외에도 해당 IP 주소도 인쇄하고 싶습니다.

ssh [email protected] sudo grep -A 2 hi /home/abc.txt
ssh [email protected] sudo grep -A 2 hi /home/abc.txt

나는 시도했다:

ssh [email protected] "sudo grep -A 2 hi /home/abc.txt && hostname" 
ssh [email protected] "sudo grep -A 2 hi /home/abc.txt && hostname"

그러나 1.5.3.9끝에는 시스템의 호스트 이름이 한 번만 인쇄됩니다.

가장 좋은 접근 방식은 무엇입니까?

답변1

좋습니다. 이미 IP 주소가 있으므로 사용할 수 있습니다.

for host in 1.5.4.7 1.5.3.9; do
    ssh core@$host "sudo grep -A 2 hi /home/abc.txt" && \
    printf "%s\n" "$host"
done

hostname질문의 예제 코드처럼 실행하면 출력됩니다.CPU 이름,아니요IP 주소당신은 당신이 원하는 것을 말합니다.

&&구분된 명령을 사용하면 후속 명령의 종료 코드가 0인 경우에만 후속 명령이 실행됩니다. grep일치하는 항목이 없으면 0이 반환되지 않고 두 번째 명령이 실행되지 않습니다.

또한 특정 사용 사례를 잘 이해하지는 못하지만 일반적으로 호스트에게 시연하기 위해 이와 같은 작업을 실행하는 것이 쉽다는 것을 알았습니다.앞으로대신 호스트에서 실행되는 출력뒤쪽에printf, 그러나 명령문을 이동하는 것 (또는 원하는 경우 명령문을 대신 사용하는 것 ) 만큼 간단합니다 echo "$host".

관련 정보