我想在系统启动时自动启动VPN,并在网络重新连接时重新连接(由于任何原因断开连接后)。
连接的命令是protonvpn-cli connect -f
断开连接的命令是protonvpn-cli disconnect
auto_vpn.service
创建了一个名为in 的文件,~/.config/systemd/user
内容如下:
[Unit]
Description=Connect to Proton-VPN
Requires=graphical-session.target
After=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnect
Restart=on-failure
RestartSec=30
StartLimitInterval=350
StartLimitBurst=10
RemainAfterExit=yes
[Install]
WantedBy=graphical-session.target
然后跑:
systemctl --user daemon-reload
systemctl --user start auto_vpn.service
systemctl --user enable auto_vpn.service
现在的问题是,该服务有效。但是当我重新启动电脑时,该服务无法启动(尽管它已启用)。此外,我不确定当网络重新连接时(由于任何原因断开连接后)它是否会重新启动。
答案1
因此,即使我不熟悉 systemd 使用的许多选项,您也可以尝试更改以下内容以使其执行并保持原样。
删除,,BindsTo=network.service
因为我认为它没有用。我已经运行过这样的事情而不需要它。
Type=simple
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnect
但请确保protonvpn-cli
目录下有一个名为的条目/usr/bin
。它可能位于其他位置,具体取决于您的安装方式。
在这种情况下,请使用whereis
来查找包。
答案2
auto_vpn.service
创建一个名为in 的文件,~/.config/systemd/user
内容如下:
[Unit]
Description=Connect to Proton-VPN
BindsTo=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnect
Restart=on-failure
RestartSec=30
StartLimitInterval=350
StartLimitBurst=10
RemainAfterExit=yes
[Install]
WantedBy=xsession.target
现在运行:
systemctl --user daemon-reload
systemctl --user start auto_vpn.service
Run `systemctl --user enable auto_vpn.service
就是这样。