Arch-Linux
在啟動服務之前請求輸入
不知何故,對 Linux 來說是新手,過去曾使用過它,儘管不像現在那麼廣泛。
我在這裡想要實現的是在電腦啟動後立即啟動 openvpn 服務。我已經部分實現了這一點。我有幾個 .ovpn 文件被配置為連接到不同的國家。我首先創建了一個腳本,詢問我想連接到哪個國家,然後建立連接。
現在我想做的是讓它自動化,這樣每次我啟動到我的使用者時,我希望服務提示我輸入然後執行它。這裡的問題是我無法強制服務提示我輸入。
巴什程式碼:
#!/bin/bash echo Which server do you want to connect read -p 'Server(pt, se, nl, es, no, is, ch, de, ca, au, at): ' server echo "You selected " $server sudo openvpn /opt/ProtonVPN/$server.protonvpn.com.udp.ovpn
這段程式碼本身就很好用。
要創建服務,我遵循以下文章:如何為 shell 腳本創建服務,以便可以像守護程序一樣啟動和停止它?
所以我的服務文件如下所示:
[Unit] Description=Connect to ProtonVPN [Service] Type=simple ExecStart=/home/{user}/bin/proton-run.sh
然後我重新啟動了守護程序:
systemctl daemon-reload
我嘗試使用:執行服務
sudo systemctl start proton-run.service
,但從未收到輸入提示,因此腳本崩潰,附上截圖:有什麼幫助嗎?我已閱讀有關 systemd-ask-password 的資訊,但我認為這不是我需要的。
你想做的事情是不可能的。
當您鍵入 `sudo systemctl start proton-run.service’ 時,您的腳本將使用單獨的程序啟動到它自己的 shell 中。提示永遠不會出現在您的 shell 中。
可能的解決方案是向 systemctl 提供參數,該參數將傳遞給底層腳本。
以下是有關如何做到這一點的一些想法:https ://superuser.com/questions/728951/systemd-giving-my-service-multiple-arguments