Linux (Ubuntu、Debian、Centos …) 的远程唤醒
环境说明: 两台局域网内的 linux 主机,本环境的系统为 麒麟系统
目的主机为:IP 192.168.1.101 mac 86:d8:60:47:28:22
远程主机为:IP 192.168.1.100
一、唤醒准备工作 (目的机上操作)
1.1 安装工具
1 | sudo apt-get install ethtool |
1.2 查看是否开启网络唤醒
1 | ethtool eno1 | grep Wake-on |
Wake-on为g代表开启,为d代表关闭
1.3 开启网络唤醒
1 | ethtool -s eno1 wol g |
命令使用后在不重启或关机的情况下有效,下次开机后又会变成d
1.4 进入待唤醒条件
关机
二、Ubuntu、Debian唤醒操作 (远程机上操作)
2.1 安装工具
1 | apt-get install wakeonlan |
2.2 唤醒计算机
wakeonlan -i 目的主机IP 目的主机mac
例子:
1 | wakeonlan -i 192.168.1.101 86:d8:60:47:28:22 |
三、Fedora、Red Hat Enterprise Linux、Centos唤醒操作
3.1 安装工具
1 | yum -y install wol |
3.2 唤醒计算机
例子:
1 | #wol 目的主机mac |
如果不可以,查看以下配置确定电脑是否进入待唤醒状态
在BIOS中找到“OnBoard LAN”选项,将它设成“Enabled”。
进入“POWER MANAGEMENT SETUP(电源管理设置)”,将“Power On by LAN/Ring”选项设为“Enabled”。
进入“Wake On LAN(网络唤醒)”选项,将其设为“Enabled”,设置好后保存退出。
四、无网络情况下
外网下载ethtool、wakeonlan软件包(不同发行版本下载不同软件),
根据系统环境选择使用dpkg或是rpm进行安装
4.1 (Ubuntu、Debian)环境下使用dpkg进行安装
1 | packageName:你下载的安装包名称 |
4.2( Fedora、Red Hat Enterprise Linux、CentOS )下使用rpm进行安装
1 | packageName:你下载的安装包名称 |
安装完成后唤醒操作步骤同上。
Linux 远程关机
安装sshpass软件(ssh 登陆不能在命令行中指定密码,sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。)
1 | sudo apt-get install sshpass |
shutdown指令是需要sudo用户权限的,要想通过sshpass远程批量关机,一个一个输密码是不现实的,所以这里将shutdown这个命令的所有者更改为当前用户并为其设置权限。
1 | sudo chown root:suma /sbin/shutdown |
第一行命令 sudo chown root:suma /sbin/shutdown
用于更改 /sbin/shutdown
文件的所有者和组。这里将所有者设置为 root
,组设置为 suma
。
第二行命令 sudo chmod u+s /sbin/shutdown
用于设置 /sbin/shutdown
文件的特殊权限。u+s
表示为文件的所有者设置 SUID
权限。
SUID 权限允许普通用户以文件所有者的身份执行该文件,通常用于一些需要特殊权限的系统命令。
在每台需要远程关机的电脑上设置上述指令后,编辑程序批量执行一下命令。
关机指令
1 | sshpass -p '密码' ssh 用户名@ip "shutdown -h now" |