Scripting

使用具有 sudo 權限的“螢幕”執行腳本

  • January 19, 2018

我正在嘗試創建一個在終端中執行的腳本,該腳本會在樹莓派“螢幕”輸出中自動啟動。這裡的問題是我需要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.
  • 執行整個screensudo,而不僅僅是openvpn?IE sudo screen -S pia openvpn /etc/openvpn/pia_netherlands.conf
  • 將腳本添加到/etc/sudoers帶有NOPASSWD:標誌的位置,這樣您就可以執行該特定命令而無需每次都輸入密碼。

引用自:https://unix.stackexchange.com/questions/416995