我正在尝试创建一个在终端中运行的脚本,并在树莓派“屏幕”输出中自动启动。这里的问题是我需要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
? IEsudo screen -S pia openvpn /etc/openvpn/pia_netherlands.conf
/etc/sudoers
添加带有标志的脚本NOPASSWD:
,这样您就可以运行该特定命令,而无需每次都输入密码。