我正在运行 Pop!_OS,一个基于 Ubuntu 的操作系统,我想nordvpn disconnect
在挂起之前和nordvpn connect
挂起之后运行。我正在使用来自的代码这个 arch 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
但我再次遇到与往常相同的错误。任何建议/建议/进一步阅读将不胜感激。
答案1
我在 Ubuntu 20.04 LTS 上尝试了类似的方法,对我来说它与以下脚本一起工作/lib/systemd/system-sleep/nordvpn-reload
:
#!/bin/sh
case $1 in
pre)
nordvpn disconnect
;;
post)
nordvpn connect
;;
esac
答案2
就我而言,我必须将线路pre)
从@moritz-shroeder 的回应确保 NordVPN 确实关闭:
#!/bin/sh
case $1 in
pre)
pkill -9 nordvpn
;;
post)
nordvpn connect
;;
esac
正如你所看到的,我pkill
在这里使用 signal 9
。这告诉nordvpn 实际上杀死它的进程。出于某种原因,disconnect
对于我来说,简单的方法还不够。
您可以了解更多信息pkill
这里