在需要无线网络的电源关闭时运行脚本

在需要无线网络的电源关闭时运行脚本

我正在尝试运行一个脚本,在关闭时将目录从一个 Linux 盒子同步到另一个。我以为我可以正常工作,但我所有的测试都是在通过有线连接连接的盒子上进行的。

当我在笔记本电脑上尝试时,它失败了。我创建了一个调试脚本,将 ip 的状态回显到文件中,并在服务中运行它,它显示运营商正在从无线接口中删除,但不是从有线接口中删除,因此它通过有线工作没有问题,但通过 wifi 则失败。

我希望它能够通过无线方式工作,这是我在笔记本电脑上使用的设置,并且我配置了有线和无线接口。

我已经使用 systemd-analyze 图来确保 prepowoff 服务在启动后期运行,因此根据我所读到的内容,关闭应该在关闭序列的早期发生。

这是文件和调试信息。

prepowoff.service(在 /etc/systemd/system 中)

[Unit]

After=multi-user.target
Before=shutdown.service reboot.service halt.service

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/root/bin/debug

[Install]
WantedBy=multi-user.target

调试脚本(在/root/bin 中)

#!/bin/bash
DATE=$(/bin/date +"%D - %T - %N")
WLAN0_STATE=$(/sbin/ip a show wlan0)
ETH0_STATE=$(/sbin/ip a show eth0)
LOGFILE=/root/bin/log.txt
SLEEP=/bin/sleep
echo "++++++  START  ++++++" > ${LOGFILE}
echo ${DATE} >> ${LOGFILE}
echo "--------------------" >> ${LOGFILE}
echo ${ETH0_STATE} >> ${LOGFILE}
echo "--------------------" >> ${LOGFILE}
echo ${WLAN0_STATE} >> ${LOGFILE}
echo "+++++  END  ++++++++" >> ${LOGFILE}

这是调试脚本的输出,当我启动后运行它时,IP 信息被删除,但您可以看到状态。

++++++  START  ++++++
01/16/16 - 16:50:47 - 145920573
--------------------
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
--------------------
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
+++++  END  ++++++++

这是重新启动后的输出,显示有线接口已打开,无线接口已关闭。

++++++  START  ++++++
01/16/16 - 16:51:10 - 424001117
--------------------
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
--------------------
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN
+++++  END  ++++++++

我已经尝试了各种启用 NetworkManager-wait-online.service 并继续执行的操作,但仅启用该服务就开始导致错误。我不明白为什么运营商会使用 wifi,因为理论上 prepowoff 服务的关闭应该先于其他事情发生。

任何帮助将不胜感激。

谢谢。

答案1

我设法让它与这个服务文件一起工作。

[Unit]
After=wpa_supplicant.service dbus.service NetworkManager.service
Requires=wpa_supplicant.service dbus.service NetworkManager.service

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/root/bin/prepowoff

[Install]
WantedBy=multi-user.target

即使网络管理器仍在运行,wpa 请求者和 dbus 仍会关闭无线卡。

相关内容