`sudo`를 사용하는 Bash 스크립트는 CLI에서 올바르게 실행되지만 클릭하면 실행되지 않습니다.

user311472

클릭 할 때 간단한 bash 스크립트를 실행하려고합니다. CLI에서 완벽하게 실행되지만 시작 motion하는 데 sudo실패합니다. 이미 nopasswd에 대한 sudoers가있는 스크립트 설정이 있으며 올바르게 시작되고 cli에서 실행할 때 암호를 묻지 않습니다. 또한 cli에서 실행할 때 모든 것을 올바르게 닫지 sudo만 파일을 두 번 클릭하고 실행하도록 지시 하면 줄을 건너 뛰는 것과 거의 같습니다 .

내 스크립트는 다음과 같습니다.

#!/bin/bash

check_process() {
  [ "$1" = "" ]  && return 0
  [ `pgrep -n $1` ] && return 1 || return 0
}

check_process "motion"
if [ $? -eq 0 ]
then
  sudo /etc/init.d/motion start
  firefox http://localhost:8081/ > /dev/null &
else
  sudo /etc/init.d/motion stop
  killall firefox > /dev/null &
fi
Radu Rădeanu

노틸러스에서는 두 번 클릭 할 때 스크립트를 실행하는 두 가지 옵션이 있습니다.

노틸러스에서 스크립트 실행

1. 터미널에서 실행

  • 이 옵션을 사용하면 스크립트가 올바르게 실행됩니다 (말한대로).

2. 실행

  • 이 옵션을 사용하려면 대신 을 사용해야합니다 pkexec(또는 gksu설치 한 경우) sudo. 암호를 묻지 않도록 sudo설정 했더라도 X 터미널 에뮬레이터 를 사용 하지 않고 사용하는 그래픽 명령을 실행할 수 없기 때문 sudo입니다.

  • 따라서이 경우 스크립트는 다음과 같아야합니다.

    #!/bin/bash
    
    check_process() {
      [ "$1" = "" ]  && return 0
      [ `pgrep -n $1` ] && return 1 || return 0
    }
    
    check_process "motion"
    if [ $? -eq 0 ]
    then
      pkexec /etc/init.d/motion start
      firefox http://localhost:8081/ > /dev/null &
    else
      pkexec /etc/init.d/motion stop
      killall firefox > /dev/null &
    fi
    

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관