Uruchamianie programu startowego w terminalu z sudo


8

Muszę uruchomić skrypt python w terminalu myscript.py przy uruchomieniu (na Lubunt). Ten skrypt wymaga rootowania.

Skonfigurowałem .desktopplik, który uruchamia następujące polecenie:

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

Okno terminala otwiera się przy uruchomieniu i uruchamia skrypt, ale następnie zamyka, gdy skrypt Python zwraca błąd (ponieważ nie jest uruchamiany jako root). Kiedy zmienię na Exec=to ...

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

... (poprzedza polecenie sudo), który działa. Jednak terminal otwiera się przy uruchomieniu i wyświetla

[sudo] password for d: \

monit, wymagający podania hasła. Chciałbym, aby wykonywanie skryptu python podczas uruchamiania było całkowicie automatyczne, bez interakcji użytkownika.

Jak mogę to osiągnąć?

Odpowiedzi:


5

Jeśli chcesz przy logowaniu, a nie przy uruchamianiu (ponieważ nie widzę, jak LXTerminal można otworzyć bez uruchamiania serwera X), musisz dodać wyjątek do pliku / etc / sudoers, aby nie pojawiał się monit Twoje hasło.

Aby to zrobić, uruchom, sudo visudoa następnie dodaj:

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

Upewnij się, że dodajesz to na końcu pliku, aby to zadziałało. Ustawiłbym również uprawnienia alarm.pydo pliku wykonywalnego, aby to działało. Zrób to, aby ustawić go jako wykonywalny:

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

Mam nadzieję, że to pomoże!


To działa! Dziękuję bardzo! Nadal mam jeden problem ... Kiedy uruchamiam „alarm.py” zamiast „python alarm.py”, pojawia się błąd „import: nie znaleziono” dla podstawowych modułów python (np. Datetime). Nie sądzę, że mogę skopiować te moduły do ​​/ Jarvis /, więc co mam zrobić?
Brandon

@Brandon Być może trzeba ustawić PYTHONPATHzmienną, ale to tylko przypuszczenie. Do tego, by utworzyć skrypt o nazwie „alarm_starter.sh” o następującej treści: PYTHONPATH={what ever it should be} sudo /home/d/Jarvis/alarm.py. Ale naprawdę nie jestem tego pewien. Może to pomoże: docs.python.org/tutorial/modules.html#the-module-search-path
kroq-gar78

9

Skrypty niestandardowe uruchamiane podczas uruchamiania jako root można uruchamiać za pośrednictwem rc.local.

Edytuj /etc/rc.localz prawami roota:

sudo nano /etc/rc.local

i postaw linię

python /home/d/Jarvis/alarm.py

tuż przed ostatnim wierszem, co powinno powiedzieć exit 0. Uruchom ponownie, aby zobaczyć, czy zadziałało.


To rozwiązało mój problem z autostartowaniem programów na Raspbian.
Daniel Harris
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.