while read $HOSTNAME do ssh root@$HOSTNAME "poweroff" done < host.log
host.log 中的内容: 192.168.122.1 192.168.122.2 192.168.122.3
机器配置过ssh互信
执行那个后发现每次只能关闭一台机器脚本就退出了。需要再次执行才能关闭后面的机器,请问是为什么?谢谢
다음 줄을 작성해 보세요: ssh root@$HOSTNAME "poweroff" < /dev/null
또는 ssh -n을 쓰세요. 이런 일이 발생하는 이유는 ssh가 나머지 stdin을 읽기 때문입니다.
ssh -n
그래서 데이터를 읽을 때 while + 리디렉션을 사용하지 않으려고 합니다. 읽고 싶으면 다른 파일 설명자를 사용하여 읽기도 합니다. stdin은 다른 명령으로 쉽게 읽을 수 있습니다.
perl -ne 'system q/ssh/, q/root@/.$_,q/poweroff/'host.log #이것은 작동해야 합니다
읽는 동안 去掉$HOSTNAME中的$
HOSTNAME을 읽는 동안 하세요 ssh root@$HOSTNAME "poweroff" 완료 < 호스트.로그
다음 줄을 작성해 보세요: ssh root@$HOSTNAME "poweroff" < /dev/null
또는
ssh -n
을 쓰세요. 이런 일이 발생하는 이유는 ssh가 나머지 stdin을 읽기 때문입니다.그래서 데이터를 읽을 때 while + 리디렉션을 사용하지 않으려고 합니다. 읽고 싶으면 다른 파일 설명자를 사용하여 읽기도 합니다. stdin은 다른 명령으로 쉽게 읽을 수 있습니다.
perl -ne 'system q/ssh/, q/root@/.$_,q/poweroff/'host.log #이것은 작동해야 합니다
읽는 동안 去掉$HOSTNAME中的$
HOSTNAME을 읽는 동안
하세요
ssh root@$HOSTNAME "poweroff"
완료 < 호스트.로그