使用具有 sudo 权限的“screen”运行脚本

使用具有 sudo 权限的“screen”运行脚本

我正在尝试创建一个在终端中运行的脚本,并在树莓派“屏幕”输出中自动启动。这里的问题是我需要sudo脚本内的权限,并且一旦进程运行,我就看不到密码请求。

该脚本的一个示例如下(如果我让它工作,我可以调整该脚本用于其他目的):

1)进入一个文件夹:

cd /etc/openvpn

2)执行服务(这需要sudo权限):

sudo openvpn ./pia_netherlands.conf

当我手动输入代码时,脚本确实会运行,因此没有问题,只是在“屏幕”内执行此操作时遇到问题。

我使用一些谷歌搜索设置了以下脚本:

#!/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 文件。

这两种方法都不起作用,我真的很难找到如何让它运行。有人可以帮我吗?

我也咨询过树莓派论坛,但没有人回复,我想是因为这更多是一个 Linux 问题而不是树莓派问题。

答案1

如果我读到手册页正确的是,openvpn可以充当带有开关的守护进程(即转到后台本身)--daemon

因此,如果您没有screen特别需要,您可以选择:

sudo openvpn --daemon --config /etc/openvpn/pia_netherlands.conf

其他一些替代方案:

  • 开始screen运行脚本,输入密码,然后分离screen.
  • screen运行整个sudo,而不是仅仅运行openvpn? IE sudo screen -S pia openvpn /etc/openvpn/pia_netherlands.conf

  • /etc/sudoers添加带有标志的脚本NOPASSWD:,这样您就可以运行该特定命令,而无需每次都输入密码。

相关内容