Script für Buffalo Magic Paket macht Probleme

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Script für Buffalo Magic Paket macht Probleme

      Hallo,

      mit folgendem Script in der Solo2, VTI 5.1, habe ich ein Buffalo NAS im Automode betrieben:

      Quellcode

      1. #!/usr/bin/env python
      2. import socket
      3. import time
      4. s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
      5. s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
      6. while 1:
      7. s.sendto('\xff'*6+'\x4C\xE6\x76\x92\x73\x16'*16, ('192.168.2.255', 9))
      8. time.sleep(180)


      Der Nachteil dabei ist das auch im Standby der Solo2 das NAS hochgefahren bleibt. Ich habe versucht das Script mit einer Abfrage des Powerstate zu erweitern, so das im Standby das NAS herunterfährt.

      Quellcode

      1. #!/usr/bin/env python
      2. import socket
      3. import time
      4. s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
      5. s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
      6. while 1:
      7. if test ($cat /proc/stb/avs/0/input) = "encoder"
      8. then
      9. echo "Vuplus in Betrieb, WOL fuer Buffalo NAS wird gesendet"
      10. s.sendto('\xff'*6+'\x4C\xE6\x76\x92\x73\x16'*16, ('192.168.2.255', 9))
      11. else
      12. echo "Vuplus im Standby"
      13. fi
      14. time.sleep 180
      Alles anzeigen


      Leider läuft das Script nicht. Ich erhalte im Telnet die Meldung über einen Syntaxfehler in Zeile 7. Wo liegt der Fehler?



      Grüße

      Flory
    • du mischt da pyhton und shell scripting, das kann nicht funktionieren. du solltest dich für eins von beiden entscheiden

      wenn du mit "cat" bzw. "echo" arbeiten willst, must du das os importieren, aber das ist nicht notwendig. Die syntax für if Bedingungen sieht in python anders aus, als die von dir verwendetete shell syntax

      Bin aber auch nur "1/8 wissend" was python betrifft und würde das mit einem shell script lösen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von @Fred ()

    • versuchs mal so, hab's nur aus der shell gestartet getestet - mein NAS wird so aufgeweckt, mit deinem Code wollte das nicht klappen

      Vor dem testen die die Beispiel-MAC mit der MAC deines Buffalo in der while Schleife ersetzen

      Quellcode

      1. # Wake-On-LAN
      2. #
      3. # Copyright 2002 by Micro Systems Marc Balmer
      4. # Written by Marc Balmer, marc@msys.ch, http://www.msys.ch/
      5. # This code is free software under the GPL
      6. import struct, socket
      7. def WakeOnLan(ethernet_address):
      8. # Construct a six-byte hardware address
      9. addr_byte = ethernet_address.split(':')
      10. hw_addr = struct.pack('BBBBBB', int(addr_byte[0], 16),
      11. int(addr_byte[1], 16),
      12. int(addr_byte[2], 16),
      13. int(addr_byte[3], 16),
      14. int(addr_byte[4], 16),
      15. int(addr_byte[5], 16))
      16. # Build the Wake-On-LAN "Magic Packet"...
      17. msg = '\xff' * 6 + hw_addr * 16
      18. # ...and send it to the broadcast address using UDP
      19. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
      20. s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
      21. s.sendto(msg, ('<broadcast>', 9))
      22. s.close()
      23. # Example use
      24. # WakeOnLan('00:11:22:AA:BB:CC')
      25. # Code end by Micro Systems Marc Balmer
      26. # VU Teil
      27. import time
      28. while 1:
      29. status = open("/proc/stb/avs/0/input", "rb").readline().split("\n")[0]
      30. if status == "encoder":
      31. print "Vuplus in Betrieb, WOL fuer Buffalo NAS wird gesendet"
      32. WakeOnLan('00:11:22:AA:BB:CC')
      33. else:
      34. print "Vuplus in Standby"
      35. time.sleep(180)
      Alles anzeigen

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von @Fred ()

    • Hi @Fred,

      im Script habe ich die MAC Adresse angepasst und per Telnet gestartet. Ich bekomme zwar keine Fehlermeldung und die Echoausgabe funktioniert auch richtig, aber das NAS bleibt im Schlafmodus. Mit Hilfe Deines Scripts habe ich meines angepasst. Das funktioniert nun einwandfrei. Vielen Dank für die Unterstützung! Das Script sieht nun so aus:

      Quellcode

      1. #!/usr/bin/env python
      2. import time
      3. import socket
      4. s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
      5. s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
      6. while 1:
      7. status = open("/proc/stb/avs/0/input", "rb").readline().split("\n")[0]
      8. if status == "encoder":
      9. print "Vuplus in Betrieb, WOL fuer Buffalo NAS wird gesendet"
      10. s.sendto('\xff'*6+'\x4C\xE6\x76\x92\x73\x16'*16, ('192.168.2.255', 9))
      11. time.sleep(180)
      Alles anzeigen


      Grüße

      Flory