サービス開始前の入力要求

サービス開始前の入力要求

とにかく私はLinuxに初めて触れたので、これほど広範囲ではありませんが、過去に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

このコードはそれ自体でうまく機能します。

サービスを作成するには、次のドキュメントに従いました。デーモンのように起動および停止できるように、シェルスクリプトのサービスをどのように生成できますか?

私のサービスファイルは次のとおりです。

[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」と入力すると、別のプロセスを使用してスクリプトが独自のシェルで実行されます。このプロンプトはシェルには表示されません。

考えられる解決策は、systemctlに引数を提供し、それを基本スクリプトに渡すことです。

これを行う方法のいくつかのアイデアは次のとおりです。https://superuser.com/questions/728951/systemd-giving-my-service-multiple-arguments

おすすめ記事