Je dois exécuter un script python dans un terminal, myscript.py au démarrage (sur Lubunt). Ce script nécessite root.
J'ai configuré un fichier .desktop
qui exécute la commande suivante:
lxterminal --command="python /home/d/Jarvis/alarm.py && /bin/bash"
La fenêtre du terminal s'ouvre au démarrage et exécute le script, mais se ferme lorsque le script Python renvoie une erreur (car il n'est pas exécuté en tant que root). Quand je change le Exec=
en ceci ...
lxterminal --command="Sudo python /home/d/Jarvis/alarm.py && /bin/bash"
... (préfixant la commande avec Sudo
) qui fonctionne. Cependant, le terminal s'ouvre au démarrage et affiche le
[Sudo] password for d: \
Invite, me demandant de saisir mon mot de passe. Je voudrais que l'exécution du script python au démarrage soit complètement automatique sans interaction de l'utilisateur.
Comment puis-je accomplir cela?
Si vous le souhaitez au moment de la connexion et non du démarrage (car je ne vois pas comment LXTerminal peut être ouvert sans le serveur X actif), vous devez ajouter une exception au fichier/etc/sudoers pour ne pas être invité à entrer. votre mot de passe.
Pour ce faire, exécutez Sudo visudo
puis ajoutez les éléments suivants:
<your username> ALL = NOPASSWD: /home/d/Jarvis/alarm.py
Assurez-vous que vous ajoutez ceci à la fin du fichier pour que cela fonctionne. Je voudrais également définir les autorisations de alarm.py
sur exécutable pour que cela fonctionne. Alors, faites ceci pour le définir comme exécutable:
chmod +x /home/d/Jarvis/alarm.py
J'espère que ça aide!
Les scripts personnalisés qui sont exécutés au démarrage en tant que root peuvent être exécutés via rc.local
.
Éditez /etc/rc.local
avec les droits root:
Sudo nano /etc/rc.local
et mettre la ligne
python /home/d/Jarvis/alarm.py
juste avant la dernière ligne, ce qui devrait dire exit 0
. Redémarrez pour voir si cela a fonctionné.