Good to Know Database

QNAP NAS übers Netzwerk aufwecken


Das folgende Python Script verwende ich um meine QNAP NAS per Wake-on-LAN übers Netzwerk aufzuwecken. Dazu sendet das Python Script ein Magic Packet mit der MAC-Adresse der NAS Netzwerkkarte. Anschließend überprüft das Script mit Hilfe von ICMP Echo Requests ob die NAS gestartet wurde und zur Verfügung steht.

Für das folgende Python-Skript erstellen Sie mit einem Editor die Datei wake-nas.py.

georg@ubuntu1404:~$ vi wake-nas.py

Fügen Sie in diese Datei den folgenden Python-Code ein und speichern die Datei ab.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#
# Creation:    20.12.2015
# Last Update: 19.11.2016
#
# Copyright (c) 2015-2016 by Georg Kainzbauer <http://www.gtkdb.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#

# import required modules
import socket
import struct
import sys
import os
import time

# main function
def main():
  # MAC address of the NAS
  mac = '00089BD40264'

  # IP address of the NAS
  address = '192.168.10.3'

  # timeout counter for the ping check
  timeout = 300

  # create magic packet
  magic_packet = ''.join(['FF' * 6, mac * 16])
  send_data = ''
  for i in range(0, len(magic_packet), 2):
    send_data = ''.join([send_data, struct.pack('B', int(magic_packet[i: i + 2], 16))])

  # send magic packet
  dgramSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  dgramSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
  dgramSocket.sendto(send_data, ("255.255.255.255", 9))

  print("Magic packet has been sent to the NAS")

  # wait for the NAS system
  while timeout > 0:
    response = os.system("ping -c 1 " + address + ">/dev/null 2>&1")
    if response == 0:
      print("Your NAS is available");

      # quit python script with return code 0
      sys.exit(0)
    else:
      # wait 1s
      time.sleep(1)

      # decrement timeout counter
      timeout -= 1

  print("Connection to the NAS timed out")

  # quit python script with return code 1
  sys.exit(1)

if __name__ == '__main__':
  main()

Nachdem Sie Das Python-Skript erstellt haben, ändern Sie die Rechte der Datei.

georg@ubuntu1404:~$ chmod 0755 wake-nas.py

Jetzt können Sie mit dem folgenden Befehl ein Magic Packet an Ihre NAS senden um diese aufzuwecken. Das Skript wartet anschließend bis die NAS erfolgreich angepingt werden kann oder der Timeout erreicht wird.

georg@ubuntu1404:~$ ./wake-nas.py
Magic packet has been sent to the NAS
Your NAS is available


Dieser Eintrag wurde am 20.11.2016 erstellt.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_31_2859.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer