
システムの起動時に cron 経由で VPN トンネルの接続を自動化しようとしています。roots
cron によってトリガーされる bash スクリプトがありますsudo crontab -e
(他のコマンドには昇格が必要なため)。
piactl (cli) を使用しても問題ありませんが、接続しようとすると、クライアントを起動する必要があるというメッセージが表示されるので...
実行したい手順の 1 つは、非ルート ユーザーのディスプレイで GUI アプリケーション (pia-client) を起動することです。
次のコマンドはターミナルから直接実行できます。
sudo su
runuser -l $username -c 'DISPLAY=:0 /opt/piavpn/bin/pia-client &> /dev/null &'
しかし、それをスクリプトに組み込むと動作しません。
スクリプトは実行可能でありchmod +x /path/to/script.sh
、同じスクリプト内の他のコマンドは動作します。
誰か解決策を持っていますか?
答え1
恥ずかしいことに、私はすでに数日前に同じ質問をしていました。気づきもしませんでした...
解決策は、コマンドが cron にないため、コマンドへのフルパスを追加することですPATH
。
コードを次のように変更しました。
sudo su
/sbin/runuser -l $username -c 'DISPLAY=:0 /opt/piavpn/bin/pia-client &> /dev/null &'
出典/クレジット:この質問に対する@steeldriverのコメント