sudo 권한으로 "screen"을 사용하여 스크립트 실행

sudo 권한으로 "screen"을 사용하여 스크립트 실행

터미널에서 실행되고 Raspberry Pi "화면" 출력에서 ​​자동으로 시작되는 스크립트를 생성하려고 합니다. 여기서 문제는 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 파일을 실행합니다.

두 방법 모두 작동하지 않으며 작동 방법을 찾는 데 정말 어려움을 겪고 있습니다. 누구든지 나를 도와줄 수 있나요?

Raspberry Pi 포럼에도 문의했지만 아무도 응답하지 않았습니다. 이는 Raspberry Pi 문제보다 Linux 문제에 더 가깝기 때문인 것 같습니다.

답변1

내가 읽으면매뉴얼 페이지맞습니다. openvpn스위치를 사용하여 데몬으로 작동하는 것이 가능합니다(즉, 배경 자체로 이동) --daemon.

따라서 특별한 요구사항이 없다면 screen다음을 선택할 수 있습니다.

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

다른 대안:

  • screen스크립트 실행을 시작 하고 비밀번호를 입력한 후 screen.
  • screensudo그냥 실행하는 대신 전체를 실행하시겠습니까 openvpn? 즉 sudo screen -S pia openvpn /etc/openvpn/pia_netherlands.conf

  • /etc/sudoersNOPASSWD:매번 비밀번호를 입력하지 않고도 특정 명령을 실행할 수 있도록 플래그가 있는 스크립트를 추가하세요 .

관련 정보