我有一个可用的 bash 脚本,可以使用可用的配置文件启动 easyvpn snap。我想在启动时运行此脚本,以便我的 ubuntu 核心设备在启动时自动连接到我的 vpn。
我的 Bash 脚本位于 /home/alexlanganke/ 中:
#!/bin/bash
echo "easy-openvpn.connect-server /home/alexlanganke/vpnconfig.ovpn" | bash
该文件自然已被执行,并且已自行测试成功。
我的 systemd 服务文件位于 /etc/systemd/system/ 中:
[Unit]
Description=VPN Autostart
[Service]
ExecStart=/home/alexlanganke/autostart_vpn.sh
[Install]
WantedBy=multi-user.target
Systemd 服务已启动并启用。您是否偶然发现我做错了什么或遗漏了什么?
journalctl -u 输出:
Mar 27 16:50:14 localhost.localdomain autostart_vpn.sh[1373]: bash: line 1: easy-openvpn.connect-server: command not found
在我看来,当通过 systemd 运行时,easyvpn 命令似乎无法被 bash 识别。路径错误?
答案1
出现问题的原因是 SystemD 以 root 身份运行。上面提到的 easyvpn 命令在系统范围内不为人所知。
可以通过将 bash 命令更改为以下内容来更正路径:
#!/bin/bash
echo "snap run easy-openvpn.connect-server /home/alexlanganke/vpnconfig.ovpn" | bash
在这里找到了有更好解释的解决方案: 如何在 snap 包中运行命令