요새 머신의 여러 머신에서 동일한 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"
.