![for 루프와 SSH를 사용하여 여러 서버에 로그인하는 스크립트를 작성하는 방법은 무엇입니까?](https://linux55.com/image/82611/for%20%EB%A3%A8%ED%94%84%EC%99%80%20SSH%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%97%AC%EB%9F%AC%20%EC%84%9C%EB%B2%84%EC%97%90%20%EB%A1%9C%EA%B7%B8%EC%9D%B8%ED%95%98%EB%8A%94%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%9E%91%EC%84%B1%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
for 루프와 SSH를 사용하여 여러 서버에 로그인하는 스크립트를 작성하고 싶습니다. awk 명령을 사용하여 로그인한 후 일곱 번째 열을 출력으로 인쇄하고 싶습니다.
아래 스크립트를 시도했지만 해결할 수 없습니다.
에서 IP 목록을 만들었습니다 /tmp/list
.
for i in `cat /tmp/list`
do
echo $i
echo "***********"
ssh $i |grep tsm |awk -F : '{print $7, "\t"}'
echo
done
답변1
퍼프 퍼프이를 더 쉽게 만들지만 ssh
간단한 사용 사례에도 적합합니다.
위의 내용이 작동할 수 있지만 서버가 명령을 실행하고 로그인 시 종료하도록 설정된 경우에만(이는 거의 발생하지 않음) 다음과 같은 의미일 수 있습니다.
ssh $i <command> | grep tsm | ...
로그인 배너를 꼭 확인해야 하는 경우 대화형 셸을 시작하는 대신 ssh에서 즉시 반환하는 tsm
명령을 사용해 보세요 .exit
ssh $i "exit" | grep tsm | ...