在启动服务之前请求输入

在启动服务之前请求输入

不知何故,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 的内容,但我认为这不是我所需要的。

答案1

你想做的事情是不可能的。

当您输入“sudo systemctl start proton-run.service”时,您的脚本将使用单独的进程启动到其自己的 shell 中。该提示永远不会出现在您的 shell 中。

可能的解决方案是向 systemctl 提供参数,并将其传递给底层脚本。

以下是一些关于如何做到这一点的想法:https://superuser.com/questions/728951/systemd-giving-my-service-multiple-arguments

相关内容