การรันโปรแกรมเริ่มต้นในเทอร์มินัลด้วย 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: \

พรอมต์กำหนดให้ฉันป้อนรหัสผ่าน ฉันต้องการเรียกใช้งานสคริปต์ python เมื่อเริ่มต้นทำงานโดยอัตโนมัติโดยไม่มีการโต้ตอบกับผู้ใช้

ฉันจะทำสิ่งนี้ได้อย่างไร

คำตอบ:


5

ถ้าคุณต้องการมันในการเข้าสู่ระบบและไม่เริ่มต้น (เพราะฉันไม่เห็นว่า LXTerminal สามารถเปิดได้โดยไม่ต้อง X server ขึ้น) คุณต้องเพิ่มข้อยกเว้นในไฟล์ / etc / sudoers เพื่อที่คุณจะไม่ได้รับพร้อมต์ รหัสผ่านของคุณ.

หากต้องการทำสิ่งนี้ให้เรียกใช้sudo visudoแล้วเพิ่มสิ่งต่อไปนี้:

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

ตรวจสอบให้แน่ใจว่าคุณเพิ่มสิ่งนี้ไว้ท้ายไฟล์เพื่อให้มันใช้งานได้ ฉันจะตั้งค่าการอนุญาตalarm.pyให้กระทำการเพื่อให้ทำงานได้ ดังนั้นทำเช่นนี้เพื่อตั้งเป็นปฏิบัติการ:

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

หวังว่ามันจะช่วย!


มันใช้งานได้! ขอบคุณมาก! ฉันยังมีปัญหาหนึ่งอยู่ ... เมื่อฉันเรียกใช้ "alarm.py" แทนที่จะเป็น "python alarm.py" ฉันได้รับข้อผิดพลาด 'นำเข้า: ไม่พบ' สำหรับโมดูลหลักของหลาม (เช่น datetime) ฉันคิดว่าฉันไม่สามารถคัดลอกโมดูลเหล่านั้นลงใน / Jarvis / ดังนั้นฉันจะทำอย่างไร
แบรนดอน

@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
Daniel Harris
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.