서비스 시작 전 입력 요청

서비스 시작 전 입력 요청

어쨌든 나는 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

관련 정보