Scripting
使用具有 sudo 權限的“螢幕”執行腳本
我正在嘗試創建一個在終端中執行的腳本,該腳本會在樹莓派“螢幕”輸出中自動啟動。這裡的問題是我需要
sudo
腳本內部的權限,並且一旦程序執行,我就看不到密碼請求。腳本的一個範例如下(如果我讓它工作,我可以調整腳本用於其他目的):
1)轉到一個文件夾:
cd /etc/openvpn
2)執行服務(這需要sudo權限):
sudo openvpn ./pia_netherlands.conf
當我手動輸入程式碼時,腳本確實會執行,所以那裡沒有問題,我只是在“螢幕”內執行它時遇到問題。
我使用一些Google搜尋設置了以下腳本:
#!/bin/sh if [ -z "$STY" ]; then exec screen -dm -S pia /bin/bash "$0"; fi cd /etc/openvpn sudo openvpn ./pia_netherlands.conf
該腳本應檢查是否有一個名為“pia”的螢幕,如果沒有,則創建一個名為 pia 的螢幕並通過首先轉到該文件夾然後執行 openvpn 文件來執行該腳本。
我嘗試了第二個更簡單的腳本,但這也不起作用:
sudo bash screen -S pia cd /etc/openvpn openvpn ./pia_netherlands.conf
此腳本打開一個名為“pia”的 bash 螢幕,轉到該文件夾,然後執行 openvpn 文件。
兩種方法都不起作用,我真的很難找到如何讓它執行。任何人都可以幫助我嗎?
我也諮詢了 raspberry pi 論壇,但沒有人回复,我猜是因為這更像是一個 linux 問題而不是 raspberry 問題。
如果我正確閱讀了手冊頁
openvpn
,則可以通過開關充當守護程序(即轉到後臺本身)--daemon
。因此,如果您不需要
screen
特別,您可以使用:sudo openvpn --daemon --config /etc/openvpn/pia_netherlands.conf
其他一些選擇:
- 開始
screen
執行腳本,輸入密碼,然後分離screen
.- 執行整個
screen
下sudo
,而不僅僅是openvpn
?IEsudo screen -S pia openvpn /etc/openvpn/pia_netherlands.conf
- 將腳本添加到
/etc/sudoers
帶有NOPASSWD:
標誌的位置,這樣您就可以執行該特定命令而無需每次都輸入密碼。