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.