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
2
sudo apt-get install ethtool
sudo apt-get install etherwake

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
2
wakeonlan -i 192.168.1.101 86:d8:60:47:28:22
sudo etherwake -i 网口名 MAC 地址。#其中,网口名是要发送唤醒包的网络接口名称,MAC 地址是要唤醒的计算机的 MAC 地址

三、Fedora、Red Hat Enterprise Linux、Centos唤醒操作

3.1 安装工具

1
yum -y install wol

3.2 唤醒计算机

例子:

1
2
#wol 目的主机mac
wol 86:d8:60:47:28:22

如果不可以,查看以下配置确定电脑是否进入待唤醒状态

在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
2
#packageName:你下载的安装包名称
dpkg -i packageName.deb

4.2( Fedora、Red Hat Enterprise Linux、CentOS )下使用rpm进行安装

1
2
#packageName:你下载的安装包名称
rpm -i packageName.rpm

安装完成后唤醒操作步骤同上。

Linux 远程关机

安装sshpass软件(ssh 登陆不能在命令行中指定密码,sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。)

1
sudo apt-get  install sshpass

shutdown指令是需要sudo用户权限的,要想通过sshpass远程批量关机,一个一个输密码是不现实的,所以这里将shutdown这个命令的所有者更改为当前用户并为其设置权限。

1
2
sudo chown root:suma /sbin/shutdown
sudo chmod u+s /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"