Chạy một chương trình khởi động trong thiết bị đầu cuối với sudo


8

Tôi cần chạy một kịch bản python trong một thiết bị đầu cuối, myscript.py khi khởi động (trên Lubunt). Kịch bản này yêu cầu root.

Tôi đã thiết lập một .desktoptệp chạy lệnh sau:

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

Cửa sổ terminal mở khi khởi động và chạy tập lệnh, nhưng sau đó đóng lại khi tập lệnh Python trả về lỗi (vì nó không được chạy dưới dạng root). Khi tôi thay đổi Exec=điều này ...

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

... (lệnh tiền tố với sudo) hoạt động. Tuy nhiên , thiết bị đầu cuối mở khi khởi động và hiển thị

[sudo] password for d: \

nhắc nhở, yêu cầu tôi nhập mật khẩu của tôi. Tôi muốn việc thực thi kịch bản python khi khởi động hoàn toàn tự động mà không có sự tương tác của người dùng.

Làm thế nào tôi có thể thực hiện điều này?

Câu trả lời:


5

Nếu bạn muốn đăng nhập và không khởi động (vì tôi không thấy LXTerminal có thể được mở mà không cần máy chủ X hoạt động), bạn phải thêm một ngoại lệ vào tệp / etc / sudoers để bạn không bị nhắc mật khẩu của bạn.

Để làm điều này, hãy chạy sudo visudovà sau đó thêm vào như sau:

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

Hãy chắc chắn rằng bạn thêm phần này vào cuối tập tin để nó hoạt động. Tôi cũng sẽ thiết lập các quyền của alarm.pyđể thực thi để làm việc này. Vì vậy, làm điều này để đặt nó là thực thi:

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

Hy vọng nó giúp!


Những công việc này! Cảm ơn bạn rất nhiều! Tôi vẫn có một vấn đề ... Khi tôi chạy "alarm.txt" thay vì "python alarm.py", tôi gặp lỗi 'nhập: không tìm thấy' cho các mô-đun python lõi (ví dụ: datetime). Tôi không nghĩ rằng tôi có thể sao chép các mô-đun đó vào / Jarvis /, vậy tôi phải làm gì?
Brandon

@Brandon Bạn có thể phải đặt PYTHONPATHbiến, nhưng đây chỉ là dự đoán. Đối với điều này, tôi sẽ tạo một tập lệnh có tên 'alarm_starter.sh' với các nội dung sau : PYTHONPATH={what ever it should be} sudo /home/d/Jarvis/alarm.py. Tôi thực sự không chắc chắn về điều này, mặc dù. Có lẽ điều này sẽ giúp: docs.python.org/tutorial/modules.html#the-module-search-path
KROQ-gar78

9

Các tập lệnh tùy chỉnh được thực thi khi khởi động với quyền root có thể được chạy qua rc.local.

Chỉnh sửa /etc/rc.localvới quyền root:

sudo nano /etc/rc.local

và đặt dòng

python /home/d/Jarvis/alarm.py

ngay trước dòng cuối cùng, nên nói exit 0. Khởi động lại để xem nếu nó hoạt động.


Điều này đã giải quyết vấn đề của tôi cho các chương trình tự khởi động trên Raspbian.
Daniel Harris
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.