我将以下脚本保存在 /lib/systemd/system-sleep/ 目录中,以便在每次从挂起状态唤醒后运行:
#!/bin/bash
if [ "$1" == "post" ]; then
sleep 5
cni=$(ip link | grep "state UP" | grep --only-matching --perl-regexp '(?<=:).*(?=:)' | tr --delete ' ')
#cni=connected(UP) network interface(s)
if [ -z "$cni" ] && [ $(nmcli radio wifi) == "disabled" ]; then
#export DISPLAY=:0
#su -c - my_user nmcli radio wifi on
nmcli radio wifi on
fi
fi
我测试了它,以普通用户身份登录,然后在终端 su - root 并使用开关“post”运行它,它按预期工作,当没有连接网络适配器且 wifi 已关闭时,它会启用 WIFI。但是,当我实际挂起并唤醒笔记本电脑时,它不起作用。我读到也许我必须定义 DISPLAY 变量并以普通用户身份运行它,但它仍然没有帮助。知道我在这里遗漏了什么吗?
编辑- 在脚本开头添加了shebang,忘记在这里写了,但这是我的脚本
Ubuntu 17.04 内核 4.10.0-21-generic
答案1
您正在使用bash
功能,但允许使用systemd
运行脚本/bin/sh
。在开头放置#!/bin/bash
,或重写脚本以仅使用sh
功能。