sudo를 사용하여 터미널에서 시작 프로그램 실행


8

터미널에서 myscript.py (Lubunt)에서 파이썬 스크립트를 실행해야합니다 . 이 스크립트에는 루트가 필요합니다.

.desktop다음 명령을 실행 하는 파일을 설정했습니다 .

lxterminal --command="python /home/d/Jarvis/alarm.py && /bin/bash"

터미널 창은 시작시 열리고 스크립트를 실행하지만 Python 스크립트가 루트로 실행되지 않기 때문에 오류가 발생하면 닫힙니다. 내가 이것을 변경하면 Exec=...

lxterminal --command="sudo python /home/d/Jarvis/alarm.py && /bin/bash"

... (접두사로 명령 sudo)이 작동합니다. 그러나 터미널은 시작시 열리고

[sudo] password for d: \

프롬프트가 표시되면 비밀번호를 입력해야합니다. 시작시 파이썬 스크립트 실행이 사용자 상호 작용없이 완전히 자동으로 수행되기를 원합니다.

어떻게하면됩니까?

답변:


5

로그인하지 않고 시작시 (X 서버를 시작하지 않고 LXTerminal을 여는 방법을 볼 수 없기 때문에) 원하는 경우 / etc / sudoers 파일에 예외를 추가해야합니다. 너의 비밀번호.

이렇게하려면 sudo visudo다음을 실행 한 후 추가하십시오.

<your username> ALL = NOPASSWD: /home/d/Jarvis/alarm.py

이 작업을 수행하려면 파일 끝에 추가해야합니다. 또한 alarm.py이것이 작동하도록 실행 가능 권한을 설정합니다 . 따라서 이것을 실행 파일로 설정하십시오.

chmod +x /home/d/Jarvis/alarm.py

그것이 도움이되기를 바랍니다!


작동합니다! 정말 고맙습니다! 여전히 한 가지 문제가 있습니다 ... "python alarm.py"대신 "alarm.py"를 실행하면 핵심 파이썬 모듈 (예 : 날짜 시간)에 대해 'import : not found'오류가 발생합니다. 해당 모듈을 / Jarvis /에 복사 할 수 없다고 생각하므로 어떻게해야합니까?
— Brandon

@Brandon PYTHONPATH변수 를 설정해야 할 수도 있지만 이것은 추측 일뿐입니다. 이를 위해 다음 내용으로 'alarm_starter.sh'라는 스크립트를 만듭니다 PYTHONPATH={what ever it should be} sudo /home/d/Jarvis/alarm.py. 그래도 확실하지 않습니다. 아마 이것이 도움이 될 것입니다 : docs.python.org/tutorial/modules.html#the-module-search-path
— kroq-gar78

9

루트로 시작할 때 실행되는 사용자 정의 스크립트는을 통해 실행할 수 있습니다 rc.local.

/etc/rc.local루트 권한으로 편집하십시오 .

sudo nano /etc/rc.local

그리고 라인을 넣어

python /home/d/Jarvis/alarm.py

마지막 줄 바로 앞에 exit 0있습니다. 작동하는지 확인하려면 재부팅하십시오.


이것은 Raspbian에서 프로그램을 자동 시작하는 문제를 해결했습니다.
— 다니엘 해리스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.