我正在运行基于Ubuntu的操作系统Pop!_OS,我希望在挂起之前运行nordvpn disconnect,在挂起之后运行nordvpn connect。我使用的是来自这个拱形linux wiki的代码,无法在系统唤醒上运行nordvpn connect/nordvpn disconnect命令。我将文件99nordvpn-reload添加到/lib/systemd/system-sleep/中,并使其与sudo chmod a+x 99nordvpn-reload一起执行。该文件中的代码是:
#!/bin/sh
case $1/$2 in
pre/*)
nordvpn disconnect
;;
post/*)
nordvpn connect
;;
esac从睡眠中醒来,运行journalctl -u systemd-suspend.service显示:
Jun 13 22:08:38 pop-os [4520]: /usr/lib/systemd/system-sleep/99nordvpn-reload failed with exit status 1.
我还尝试以本地用户的身份运行该命令:
#!/bin/sh
case $1/$2 in
pre/*)
sudo -u $USER nordvpn disconnect
;;
post/*)
sudo -u $USER nordvpn connect
;;
esac但是$USER被echo $USER的输出所取代。但是,我得到的错误消息与以前相同。我假设此错误与正在本地安装的nordvpn包或我的$USER有关,因此试图使用sudo -u $USER执行命令。
基于这条线,我还尝试创建具有以下内容的全局可执行文件/usr/local/bin/nordvpn-reload:
#!/bin/bash
nordvpn disconnect;nordvpn connect并将/lib/systemd/system-sleep/99nordvpn-reload的内容更改为:
#!/bin/sh
case $1/$2 in
pre/*)
exit 0
;;
post/*)
/usr/local/bin/nordvpn-reload
;;
esac但是再一次,我得到了和往常一样的错误。如有任何建议/建议/进一步阅读,将不胜感激。
发布于 2020-11-11 13:10:30
我在Ubuntu20.04LTS上尝试了类似的东西,对我来说,它适用于/lib/systemd/system-sleep/nordvpn-reload上的脚本:
#!/bin/sh
case $1 in
pre)
nordvpn disconnect
;;
post)
nordvpn connect
;;
esac发布于 2022-12-09 15:21:01
在我的例子中,我必须将pre)行从@moritz-shroeder的答复中更改,以确保nordvpn实际上是关闭的:
#!/bin/sh
case $1 in
pre)
pkill -9 nordvpn
;;
post)
nordvpn connect
;;
esac正如您所看到的,我在这里使用pkill和信号9。这告诉nordvpn实际上要杀死它的进程。出于某种原因,在我的例子中,一个简单的disconnect是不够的。
您可以在pkill 这里上了解更多信息。
https://unix.stackexchange.com/questions/592773
复制相似问题