Menjalankan program startup di terminal dengan sudo


8

Saya perlu menjalankan skrip python di terminal, myscript.py saat startup (di Lubunt). Script ini membutuhkan root.

Saya telah menyiapkan .desktopfile yang menjalankan perintah berikut:

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

Jendela terminal terbuka saat startup dan menjalankan skrip, tetapi kemudian ditutup ketika skrip Python mengembalikan kesalahan (karena itu tidak dijalankan sebagai root). Ketika saya mengubah Exec=ini ...

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

... (perintah awalan dengan sudo) yang berfungsi. Namun , terminal terbuka saat startup dan menampilkan

[sudo] password for d: \

prompt, mengharuskan saya untuk memasukkan kata sandi. Saya ingin eksekusi skrip python saat startup sepenuhnya otomatis tanpa interaksi pengguna.

Bagaimana saya bisa mencapai ini?

Jawaban:


5

Jika Anda menginginkannya saat login dan bukan startup (karena saya tidak melihat bagaimana LXTerminal dapat dibuka tanpa X server dinyalakan), Anda harus menambahkan pengecualian ke file / etc / sudoers sehingga Anda tidak akan diminta untuk kata sandi Anda.

Untuk melakukan ini, jalankan sudo visudodan kemudian tambahkan berikut ini:

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

Pastikan Anda menambahkan ini di akhir file agar ini berfungsi. Saya juga akan mengatur izin alarm.pyuntuk dieksekusi agar ini berfungsi. Jadi, lakukan ini untuk menjadikannya sebagai executable:

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

Semoga ini bisa membantu!


Ini bekerja! Terima kasih banyak! Saya masih memiliki satu masalah ... Ketika saya menjalankan "alarm.py" alih-alih "python alarm.py", saya mendapatkan kesalahan 'impor: tidak ditemukan' untuk modul inti python (mis. Datetime). Saya tidak berpikir saya dapat menyalin modul-modul itu ke / Jarvis /, jadi apa yang harus saya lakukan?
Brandon

@Brandon Anda mungkin harus mengatur PYTHONPATHvariabel, tetapi ini hanya dugaan. Untuk ini, saya akan membuat script yang disebut 'alarm_starter.sh' dengan isi sebagai berikut: PYTHONPATH={what ever it should be} sudo /home/d/Jarvis/alarm.py. Saya benar-benar tidak yakin tentang ini. Mungkin ini akan membantu: docs.python.org/tutorial/modules.html#the-module-search-path
kroq-gar78

9

Skrip khusus yang dijalankan saat startup sebagai root dapat dijalankan melalui rc.local.

Edit /etc/rc.localdengan hak root:

sudo nano /etc/rc.local

dan menempatkan garis

python /home/d/Jarvis/alarm.py

tepat sebelum baris terakhir, yang seharusnya mengatakan exit 0. Reboot untuk melihat apakah itu berhasil.


Ini memecahkan masalah saya untuk program autostarting pada Raspbian.
Daniel Harris
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.