shell通过发送魔术包唤醒主机

在这里插入图片描述

前言

远程唤醒主机有多种方法,如果想通过命令方式,则方便放在计划任务中执行。

一、shell脚本

[root@pg1 ~]# echo -e $(echo $(printf 'f%.0s' {1..12}; printf "$(echo 54-E1-AD-83-1A-E6 | sed 's/-//g')%.0s" {1..16}) | sed -e 's/../\\x&/g') | nc -w1 -u  255.255.255.255 2301

二、先决条件

需要安装nc

yum install -y nc

如果没有网络可下载依赖包安装,地址如下

http://mirror.centos.org/centos/7/os/x86_64/Packages/

依赖包如下,下载后安装

[root@pg1 ~]# rpm -i libpcap-1.5.3-12.el7.x86_64.rpm
[root@pg1 ~]# rpm -i nmap-ncat-6.40-19.el7.x86_64.rpm

三、命令解释

魔术包

WOL魔术包是有12个F跟随16个重复的mac地址不含‘:’或‘-’符号构成。如果mac地址是这样

54-E1-AD-83-1A-E6

则魔术包类似这样

ffffffffffff54E1AD831AE654E1AD831AE654E1AD831AE654E1AD831AE654E1AD831AE654E1AD831AE654E1AD831AE654E1AD831AE654E1AD831AE654E1AD831AE654E1AD831AE654E1AD831AE654E1AD831AE654E1AD831AE654E1AD831AE654E1AD831AE6

格式化输出

1. printf 'f%.0s':这是 printf 命令的格式字符串。
• 'f':表示直接输出字符 'f'。
• %.0s:是一个格式化字符串,用于处理后续的参数。%s 通常用于输出字符串,但这里的 .0 意味着不输出任何字符(即,字符串的长度为0)。
2. {1..12}:这是一个 Bash shell 中的序列扩展。它会被扩展为从1到12的一系列数字,即 1 2 3 4 5 6 7 8 9 10 11 12。
当你运行 printf 'f%.0s' {1..12},printf 会对每一个由 {1..12} 生成的数字执行一次。但由于 %.0s 的存在,这些数字实际上不会被输出。因此,该命令的实际输出是:
fffffffffffff
即,连续输出了12个 'f' 字符。

sed命令

sed命令用来把mac地址中的符号“-”去除。添加\x十六进制区分符,因此ff变成\xff,54变成\x54,上面包转后后是这样

\xff\xff\xff\xff\xff\xff\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6\x54\xE1\xAD\x83\x1A\xE6

发送

然后通过nc命令发送出去

-w1:设置连接的等待时间为1秒。如果在1秒内没有收到数据或连接没有建立,则命令会退出。
-u:使用UDP协议。默认情况下,nc使用TCP协议,但使用-u选项会使其使用UDP。
255.255.255.255:目标IP地址。这是一个特殊的广播地址,它意味着数据包会被发送到该网络上的所有设备。
2301:目标端口号。这个可有可无。

其他说明:

echo -e 是一个在 Unix 和类 Unix 系统(如 Linux)中常用的 echo 命令的选项,它允许对转义字符进行解释。
在 echo 命令中使用 -e 选项时,你可以使用特定的转义序列来生成特殊字符或控制文本输出格式。
$() 是一种命令替换的语法,它允许你将一个命令的输出替换为变量或脚本中的另一个位置。$() 内的命令会先执行,然后将其标准输出替换到脚本中的当前位置。

这与反引号(`command`)的功能相同,但 $() 的语法在视觉上更加清晰,并且在嵌套时更容易管理。
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值