【问题标题】:Bash poweroff script hangs systemBash poweroff 脚本挂起系统
【发布时间】:2018-04-21 23:58:28
【问题描述】:

如果我的 ping 先成功,我的意图是循环浏览我的 ips 和 poweroff 列表。但是系统似乎挂起。运行此脚本后,我无法再 ping 系统并且它们没有关闭电源。如果我通过终端运行ssh 192.168.1.ip "sudo poweroff",我不会遇到这个问题。有什么建议吗?

for ((ip=40, cnt=0; ip<=max; ip++, cnt++))
do
    if ping -c 1 192.168.1.$ip &> /dev/null
    then
        printf "\n${array[$cnt]}: Ping Successful"
        ssh 192.168.1.$ip "sudo poweroff"
        printf "\n${array[$cnt]}: Power Down Executed\n"
        sleep 1
    else
        printf "\n${array[$cnt]}: Ping Failed\n"    
    fi
done

运行单个ssh 192.168.1.40 "sudo poweroff" 后,系统已正确关闭电源。运行我的脚本时,我无法 ping 系统,但是我可以直观地看到风扇和 LED 仍然亮着。我认为我应该使用 KVM 仔细查看,因为 ssh 在运行此脚本后不允许连接。乍一看,我仍然不明白运行ssh 192.168.1.40 "sudo poweroff" 并通过我的脚本运行它真的有什么不同。无论如何,我明天会尝试添加更多信息。

【问题讨论】:

  • 尝试先运行一个ssh 192.168.1.42 sudo poweroff,然后解释更多正在发生的事情以及您如何知道远程计算机未关闭电源。在远程机器和其他相关日志上给出dmesg 的输出。详细说明远程机器的实际状态。所以编辑您的问题以进一步改进它。
  • ssh 192.168.1.$ip "(sleep 5; sudo poweroff)&amp;" 将进程置于远程主机的后台并在关机前休眠 5 秒,以便脚本有时间完成并在远程主机关闭之前退出。 .
  • sudo 需要密码吗?
  • @Paul sudo 不需要密码。
  • @DavidC.Rankin 我很肯定这解决了这个问题。谢谢。

标签: linux bash ubuntu unix ssh


【解决方案1】:

ssh 192.168.1.$ip "(sleep 5; sudo poweroff)&" 将进程置于远程主机的后台并在关机前休眠 5 秒,以便脚本有时间完成并退出在远程主机宕机之前... – David C. Rankin

这解决了我的问题。

【讨论】:

  • 现在应该是一个足够长的计时器,您可以接受自己的答案。
猜你喜欢
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 2014-07-05
  • 2014-04-07
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多