我有一个脚本可以关闭教室中运行 Ubuntu 22.04 的计算机。该脚本会关闭所有计算机,但会挂起且不会关闭。如果还有其他内容我应该添加到脚本中或进行更改。hothost
是一个文件,其中包含我想要关闭的计算机的 IP 地址。
#!/bin/bash
while read host; do
sshpass -p 123456 ssh "root@$host" shutdown -h now &
done < hothost
答案1
我会使用 sshkeys 而不是密码。我还会 shutdown -h +1 来安排将来关闭 1 分钟,以便在执行关闭之前给我的脚本时间退出。如果它仍然挂起,我建议在该脚本关闭它时登录到目标主终端并查看挂起的内容
答案2
我在脚本中添加了 < /dev/null 并解决了问题
#!/bin/bash
while read HOST ;
do sshpass -p 123456 ssh "root@$HOST" "hostname; shutdown now " < /dev/null;
done < hothost