Je veux lancer un script Python automatiquement au démarrage d'ubuntu. Normalement, ce que je dois faire, c'est ouvrir la ligne de commande sur ubuntu et taper
python /home/ubuntu/Desktop/UDP_Server.py
Cela va exécuter le code Python et je peux maintenant lancer mon autre code client pour communiquer avec lui.
Je veux trouver un moyen de faire exécuter ce code automatiquement au démarrage. J'ai essayé de mettre un script dans mon /etc/init.d
et j'ai également essayé de l'avoir comme programme de démarrage comme indiqué ci-dessous.
Mais lorsque j'allume mon ordinateur, ce code ne s'exécute pas parce qu'il ne communique pas avec mon code client comme je l'attends (comme il le fait lorsque j'exécute le script Python script depuis la ligne de commande).
EDITAR:
Placer des commandes telles qu'une commande touch dans rc.local semble fonctionner au démarrage. C'est également le cas pour la crontab. J'ai ajouté une commande @reboot et cela fonctionne. Mais ce code particulier ne semble pas fonctionner au démarrage (que je le place dans crontab, rc.local, init.d ou comme application de démarrage).
Voici le code de mon serveur UDP
import socket
import serial
import subprocess
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = (192.168.1.13, 10000)
print 'starting up on %s port %s' % server_address
sock.bind(server_address)
ser = serial.Serial('/dev/ttymxc3', 115200, timeout = 0)
print 'Serial connected'
while True:
data = sock.recv(7)
print 'received ', data
if data == "STOP":
subprocess.call(["sudo", "shutdown", "-h", "now"])
else:
ser.write(data)
Lorsque je l'exécute en ligne de commande, cela donne quelque chose comme ceci
starting up on 192.168.1.13 port 10000
Serial connected
Ensuite, le programme attend une connexion. Si je demande à mon client UDP d'envoyer STOP
received 'STOP'
L'ordinateur s'éteint alors.
Mais lorsque le code est exécuté au démarrage et que j'envoie 'STOP' via le client UDP, l'ordinateur ne s'arrête pas. La boucle while du code serveur avec sock.recv ne reçoit pas les chaînes qui lui sont envoyées.
SOLUTION :
Après avoir ajouté les lignes de code suivantes à mon fichier /etc/network/interfaces
auto wlan0
iface wlan0 inet dhcp
post-up python /home/ubuntu/Desktop/UDP_Server.py
Le code exécuté au démarrage après que le réseau wifi ait fonctionné donc mon client a pu communiquer avec le serveur.