2017-09-29 8 views
-1

J'ai fait de la programmation python simple, mais je ne suis pas un expert, ce que je dois faire est de communiquer un Raspberry Pi avec 12 PC Windows, tous les PC sont connectés à l'UPS pour faire des arrêts de courant fréquents que j'ai dans mon pays, le Pi agira comme un "serveur" et il surveillera la source d'énergie et dans le cas d'un arrêt il enverra une commande pour exécuter un script sur chaque PC afin qu'ils puissent effectuer une séquence d'arrêt correcte.Comunicate tow ou plus pc sur un lan avec python

Je sais comment travailler avec le GPIO Pi sur python, mais je n'ai aucune idée de comment communiquer ensuite sur le réseau local.

Toute aide sera appréciée.

+0

Vous pouvez utiliser le socket TCP. Lisez simplement [Socket Programming HOWTO] (https://docs.python.org/3/howto/sockets.html), et vous aurez l'idée. –

+0

https://lifehacker.com/5275652/shut-down-your-windows-pc-remotely-from-linux –

Répondre

0

Je pense que la meilleure façon d'y parvenir est par bifurquer hors un processus à l'aide du module de sous-processus, et appelant la commande:

net rpc shutdown -f -t 0 -C 'message' -U userName%password -I xxx.yyy.zzz.ttt 

source: Shutdown Windows machine from linux terminal

Pour autant que je peux dire, il Il n'y a pas de modules python qui offrent une bonne implémentation des outils 'net rpc', donc les appeler en utilisant un sous-processus est le moyen le plus simple. Pour gérer les commentaires de la commande, je vous suggère de rediriger stdout et stderr vers python, puis de capturer et de déclencher des exceptions en extrayant la sortie des mots-clés.

En aucun cas, ce n'est la façon la plus pythonienne, je serais intéressé de voir si quelqu'un d'autre a une façon plus pythonienne de le faire!

+0

Cela a fonctionné pour vous? Pouvez-vous accepter la réponse si c'était le cas? –