Willkommen im MiGo-IT-Blog

Sonderartikel

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (8 Stimmen, Durchschnitt: 2.75 von 5)
Loading...Loading...

Herzlich Willkommen im neuen MiGo-IT-Blog.

Dies ist das offizielle Nachfolge-Projekt von Mikes-PC Hilfe. Evtl. wundern Sie sich, wo das Forum als auch die Tipps geblieben sind. Diverse Umstände haben mich dazu veranlasst, das Forum zu schließen. Einer der Hauptgründe ist aber die momentane Situation der Forumssoftware selbst gewesen. Der bisherige Deutschlandvertrieb durfte schon die aktuelle Version nicht mehr verkaufen, ebenso wie den Nachfolger. Für uns hätte das bedeutet, schnellstmöglichst ein Update auf den Nachfolger anzugehen, der Aufwand dafür hätte aber in keinem Verhältnis gestanden. Auch nimmt das Projekt einen enormen Zeitaufwand in Anspruch, was die weiteren Gründe waren. Alle Details finden Sie hier.

Das Mikes PC Hilfe Forum konnten wir aber als Archiv weiterleben lassen, klicken Sie dazu in der Navigation auf das Archiv. Alle Themen sind dort enthalten. Auch alle Links aus z.B. Suchmaschinen sollten weiter funktionieren.

Eine Option um neue Beiträge zu schreiben gibt es nicht, wir bieten hier auch keinen PC Support mehr an. Dafür bitten wir Sie, sich in anderen Foren Rat zu holen.

Ich hoffe Sie bleiben uns als Leser im Rahmen des Blogs treu :)

Grüße Mike

[MUNIN] Überwachung AVM Fritzbox Traffic via UPNP mit Munin

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Bewertung vorhanden)
Loading...Loading...

Heute stelle ich ein weiteres Plugin für die Überwachung der AVM FritzBox Modelle vor. Auch dieses Plugin nutzt die UPNP Schnittstelle, welche ich bereits im letzten Beitrag vorgestellt habe. Das Plugin liest die globale Anzahl Transferierter Bytes der Box aus und errechnet automatisch den Diff seit dem letzten Update. Die Daten werden in Bits angezeigt.

Auch hier wird die globale Klasse MuninPlugin benötigt, welche Sie hier finden.

  1. #!/usr/bin/php
  2. <?php
  3. ##############################
  4. #%# family=auto
  5. #%# capabilities=autoconf
  6.  
  7. require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'MuninPlugin.php';
  8.  
  9. /**
  10.  * AVM Traffic plugin for Munin
  11.  *
  12.  * - Add symlink:
  13.  * ln -s <pathtothisfile> /etc/munin/plugins/avm_traffic_router
  14.  *
  15.  * - Add plugin configuration to /etc/munin/plugin-conf.d/avm
  16.  * [avm_traffic_router]
  17.  * env.ip 192.168.178.1:49000
  18.  * env.host fritz.box
  19.  *
  20.  * @author Mike Goldhausen
  21.  * @copyright Copyright (c) 2015 by MiGo-WebDesign, www.migo-webdesign.de, Germany
  22.  */
  23.  
  24. class AvmTraffic extends MuninPlugin {
  25.  
  26. 	/**
  27. 	 * general Config for Plugin
  28. 	 *
  29. 	 * @return array
  30. 	*/
  31. 	protected function getPluginSetup() {
  32. 		return array(
  33. 				'host_name' => $this->avm['host'],
  34. 				'graph_order' => 'down up',
  35. 				'graph_title' => 'AVM Fritz!Box WAN traffic',
  36. 				'graph_category' => 'network',
  37. 				'graph_info' => 'This graph shows the traffic of the AVM Fritz!Box WAN network interface. Please note that the traffic is shown in bits per second, not bytes.',
  38. 				'graph_vlabel' => 'bits in (-) / out (+) per \${graph_period}',
  39. 				'graph_args' => '--base 1024'
  40. 		);
  41. 	}
  42.  
  43. 	/**
  44. 	 * Config for Graphs
  45. 	 *
  46. 	 * @return array
  47. 	 */
  48. 	protected function getPluginGraphs() {
  49. 		$graphs = array();
  50.  
  51. 		$graphs['down']['label'] = "received";
  52. 		$graphs['down']['type'] = "COUNTER";
  53. 		$graphs['down']['graph'] = "no";
  54. 		$graphs['down']['cdef'] = "down,8,*";
  55. 		$graphs['down']['max'] = "1000000000";
  56.  
  57. 		$graphs['up']['label'] = "send";
  58. 		$graphs['up']['type'] = "COUNTER";
  59. 		$graphs['up']['draw'] = "AREA";
  60. 		$graphs['up']['cdef'] = "up,8,*";
  61. 		$graphs['up']['max'] = "1000000000";
  62. 		$graphs['up']['negative'] = "down";
  63. 		$graphs['up']['info'] = "Traffic of the WAN interface.";
  64.  
  65. 		return $graphs;
  66. 	}
  67.  
  68. 	/**
  69. 	 * Transform data from RAW HTML into XML Structure
  70. 	 *
  71. 	 * @return data
  72. 	 */
  73. 	protected function transformData() {
  74. 		$client = new SoapClient(
  75. 			null,
  76. 			array(
  77. 					'location'   => "http://".$this->avm['ip']."/igdupnp/control/WANCommonIFC1",
  78. 					'uri'        => "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1",
  79. 					'soapaction' => "",
  80. 					'noroot'     => True
  81. 			)
  82. 		);
  83.  
  84. 		$data_prop = $client->GetCommonLinkProperties();
  85. 		$data_stats = $client->GetAddonInfos();
  86.  
  87. 		$graphs['up'] = $data_stats['NewTotalBytesSent'];
  88. 		$graphs['down'] = $data_stats['NewTotalBytesReceived'];
  89.  
  90. 		return $graphs;
  91. 	}
  92.  
  93. 	/**
  94. 	 * Read source & collecting values
  95. 	 *
  96. 	 * @return array
  97. 	 */
  98. 	protected function getValues() {
  99. 		$data = $this->transformData();
  100. 		return $data;
  101. 	}
  102.  
  103. }
  104.  
  105. $plugin = new AvmTraffic($argv);
  106. $plugin->start($argv);
  107. ?>

[MUNIN] Überwachung AVM Fritzbox Uptime via UPNP mit Munin

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Bewertung vorhanden)
Loading...Loading...

Wie in unserem letzten Artikel angekündigt, möchte ich heute ein weiteres Plugin vorstellen. Diesmal greift das Plugin nicht über die HTML GUI zu, sondern fragt die UPNP Schnittstelle der Fritzbox ab. Mehr Details dazu finden Sie in unserem ersten und zweiten Artikel dazu.

Auch hier wird die globale Klasse MuninPlugin benötigt, welche Sie hier finden.

  1. #!/usr/bin/php
  2. <?php
  3. ##############################
  4. #%# family=auto
  5. #%# capabilities=autoconf
  6.  
  7. require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'MuninPlugin.php';
  8.  
  9. /**
  10.  * AVM Uptime plugin for Munin
  11.  *
  12.  * - Add symlink:
  13.  * ln -s <pathtothisfile> /etc/munin/plugins/avm_uptime_router
  14.  *
  15.  * - Add plugin configuration to /etc/munin/plugin-conf.d/avm
  16.  * [avm_uptime_router]
  17.  * env.ip 192.168.178.1:49000
  18.  * env.host fritz.box
  19.  *
  20.  * @author Mike Goldhausen
  21.  * @copyright Copyright (c) 2015 by MiGo-WebDesign, www.migo-webdesign.de, Germany
  22.  */
  23.  
  24. class AvmUptime extends MuninPlugin {
  25.  
  26.   /**
  27. 	 * general Config for Plugin
  28. 	 *
  29. 	 * @return array
  30. 	*/
  31. 	protected function getPluginSetup() {
  32. 		return array(
  33. 				'host_name' => $this->avm['host'],
  34. 				#'graph_order' => 'down up',
  35. 				'graph_title' => 'AVM Fritz!Box Uptime',
  36. 				'graph_category' => 'system',
  37. 				'graph_info' => 'Uptime AVM!FritzBox in Days',
  38. 				'graph_vlabel' => 'Uptime in Days',
  39. 				'graph_args' => '--base 1000 -l 0',
  40. 				'graph_scale' => 'no'
  41. 		);
  42. 	}
  43.  
  44. 	/**
  45. 	 * Config for Graphs
  46. 	 *
  47. 	 * @return array
  48. 	 */
  49. 	protected function getPluginGraphs() {
  50. 		$graphs = array();
  51.  
  52. 		$graphs['uptime']['label'] = "uptime";
  53. 		$graphs['uptime']['draw'] = "AREA";
  54.  
  55. 		return $graphs;
  56. 	}
  57.  
  58. 	/**
  59. 	 * Transform data from RAW HTML into XML Structure
  60. 	 *
  61. 	 * @return data
  62. 	 */
  63. 	protected function transformData() {
  64. 		$client = new SoapClient(
  65. 		    null,
  66. 		    array(
  67. 		        'location'   => "http://".$this->avm['ip']."/igdupnp/control/WANIPConn1",
  68. 		        'uri'        => "urn:schemas-upnp-org:service:WANIPConnection:1",
  69. 		        'soapaction' => "",
  70. 		        'noroot'     => True
  71. 		    )
  72. 		);
  73.  
  74. 		$status = $client->GetStatusInfo();
  75. 		$uptime = round((intval($status['NewUptime']) / 86400),2);
  76.  
  77. 		$graphs['uptime'] = $uptime;
  78.  
  79. 		return $graphs;
  80. 	}
  81.  
  82. 	/**
  83. 	 * Read source & collecting values
  84. 	 *
  85. 	 * @return array
  86. 	 */
  87. 	protected function getValues() {
  88. 		$data = $this->transformData();
  89. 		return $data;
  90. 	}
  91.  
  92. }
  93.  
  94. $plugin = new AvmUptime($argv);
  95. $plugin->start($argv);
  96. ?>

AVM FritzBox mit Munin überwachen – Teil 2

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Bewertung vorhanden)
Loading...Loading...

Im ersten Teil sind wir nur sehr oberflächlich auf die UPNP Features der Fritzbox eingegangen. Nachdem ich mich nun intensiver damit beschäftigt habe, muss ich sagen, dass das UPNP Interface für Munin nicht sehr nützlich ist, da kaum Infos auszuwerten sind. Vielmehr habe ich nun einen simplen HTML Reader für die AVM GUI entwickelt. Er funktioniert aktuell mit FritzOS 6.2x.

Ein wenig kompleziert war das Session Handling der AVM GUI, was aber elegant gelöst wurde. Am jedem Request muss eine Session ID hängen, diese können wir uns über ein passendes XML direkt selbst erzeugen. Anbei der Ausschnitt für das lesen aus der AVM GUI:

Wie man hier erkennen kann nutze ich eine Klasse MuninPlugin für globale Funktionen. Es gibt eine globale Variable $password mit dem Passwort der Box. Über den Constructor in der Klasse werden die beiden Umgebungsvariablen IP & Host ausgelesen, welche über eine conf Datei im Munin-Node plugin-conf.d Ordner gesetzt werden. (Bsp: env.ip 192.168.178.1)

Für die Methode readFromAvmGui werden einige Parameter benötigt. Die Variable $page enthält die Unterseite zum auslesen, Bsp. system/security.lua. Die Variablen $start & $end enthalten die jeweiligen Zeilen-Inhalte nach denen gesucht werden soll. Dazwischen wird mitgeschnitten. Ein Beispiel finden Sie weiter unten.

Diese Datei muss als symlink auch im Ordner /etc/munin/plugins/ vorhanden sein.

  1. <?php
  2. /**
  3.  * Class for MuninPlugins
  4.  *
  5.  * - Add symlink:
  6.  * ln -s <pathtothisfile> /etc/munin/plugins/MuninPlugin.php
  7.  *
  8.  * @author Mike Goldhausen
  9.  * @copyright Copyright (c) 2015 by MiGo-WebDesign, www.migo-webdesign.de, Germany
  10.  * 
  11.  */
  12. class MuninPlugin {
  13.  
  14. 	private $password = "";
  15. 	protected $avm = array();
  16.  
  17. 	/**
  18. 	 * Init 
  19. 	 */
  20. 	public function __construct($arg) {
  21. 		$this->avm['ip'] = getenv('ip');
  22. 		$this->avm['host'] = getenv('host');
  23. 	}
  24.  
  25. 	/**
  26. 	 * Start collecting data
  27. 	 *
  28. 	 * @param array $argv
  29. 	 * @return void
  30. 	 */
  31. 	public function start($arg) {
  32. 		if (isset($arg[1]) && $arg[1] == "autoconf") {
  33. 			$this->autoconf();
  34. 		} elseif (isset($arg[1]) && $arg[1] == "config") {
  35. 			$this->generateConfig();
  36. 		} else {
  37. 			$this->printValues();
  38. 		}
  39. 	}
  40.  
  41. 	/**
  42. 	 * Autoconf
  43. 	 *
  44. 	 * @return void
  45. 	 */
  46. 	public function autoconf() {
  47. 		echo "yes\n";
  48. 	}
  49.  
  50. 	/**
  51. 	 * Generate Config of Plugin Data
  52. 	 *
  53. 	 * @return void
  54. 	 */
  55. 	public function generateConfig() {
  56. 		foreach ($this->getPluginSetup() as $k => $v) {
  57. 			echo "$k $v\n";
  58. 		}
  59. 		foreach ($this->getPluginGraphs() as $graph => $setup) {
  60. 			foreach ($setup as $key => $value) {
  61. 				echo "$graph.$key $value\n";
  62. 			}
  63. 		}
  64. 	}
  65.  
  66. 	/**
  67. 	 * Print values of array
  68. 	 *
  69. 	 * @return void
  70. 	 */
  71. 	public function printValues() {
  72. 		foreach ($this->getValues() as $k => $v) {
  73. 			echo "$k.value $v\n";
  74. 		}
  75. 	}
  76.  
  77. 	/**
  78. 	 * Read from AVM GUI with FritzOS 6.20
  79. 	 * 
  80. 	 * @return string
  81. 	 * 
  82. 	 */
  83. 	public function readFromAvmGui($page, $start, $end) {
  84. 		$loginPage 	= "http://".$this->avm['ip']."/login_sid.lua";
  85. 		$contentList 	= "http://".$this->avm['ip']."/".$page."?sid=";
  86.  
  87. 		$xml = simplexml_load_file($loginPage) or die("url not loading");
  88.  
  89. 		$SID 		= $xml->SID;
  90. 		$Challenge 	= $xml->Challenge;
  91. 		$response	= $Challenge."-".md5(mb_convert_encoding($Challenge."-".$this->password, "UTF-16LE"));
  92.  
  93. 		if ($SID == "0000000000000000") {
  94. 			$loginPageResponse = $loginPage."?response=".$response;
  95. 			$xml2 = simplexml_load_file($loginPageResponse) or die("url not loading");
  96. 			$SID = $xml2->SID;
  97. 		}
  98.  
  99. 		if (!$SID) {
  100. 			die("SID holen nicht OK");
  101. 		}
  102.  
  103. 		$content = file($contentList.$SID);
  104.  
  105. 		$record = false;
  106. 		foreach ($content as $w) {
  107. 			if (preg_match("#".$start."#", $w)) {
  108. 				$record = true;
  109. 			}
  110.  
  111. 			if ($record == true) {
  112. 				if (preg_match("#".$end."#", $w)) {
  113. 					$contentArr[] = $w; //Get the last one
  114. 					$record = false;
  115. 				}
  116. 			}
  117.  
  118. 			if ($record == true) {
  119. 				$contentArr[] = $w;
  120. 			}
  121. 		}
  122.  
  123. 		$output = implode("", $contentArr);
  124. 		$output = preg_replace("/\&/","&amp;", $output);
  125. 		return $output;
  126. 	}
  127. }
  128. ?>

Kommen wir nun zu dem eigentlichen Plugin. In dem Beispiel zeige ich, wie man die aktuelle Anzahl an aktiven WLAN Verbindungen vermitteln kann.

Unterteilt ist das Plugin grob in die Methoden zur Erzeugung der Konfiguration, der Graphen und der eigentlichen Werte. Das Plugin sollte soweit eigentlich selbst erklärend sein, auf die einzelnen MUNIN Parameter gehe ich hier nicht weiter ein.

Munin Plugin: AVM WLAN Connection Count

  1. #!/usr/bin/php
  2. <?php
  3. ##############################
  4. #%# family=auto
  5. #%# capabilities=autoconf
  6.  
  7. require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'MuninPlugin.php';
  8.  
  9. /**
  10.  * AVM WLAN Connection Count plugin for Munin
  11.  *
  12.  * - Add symlink:
  13.  * ln -s <pathtothisfile> /etc/munin/plugins/avm_wlan_router
  14.  *
  15.  * - Add plugin configuration to /etc/munin/plugin-conf.d/avm
  16.  * [avm_wlan_router]
  17.  * env.ip 192.168.178.1
  18.  * env.host fritz.box
  19.  *
  20.  * @author Mike Goldhausen
  21.  * @copyright Copyright (c) 2015 by MiGo-WebDesign, www.migo-webdesign.de, Germany
  22.  */
  23.  
  24. class AvmWlan extends MuninPlugin {
  25.  
  26. 	/**
  27. 	 * general Config for Plugin
  28. 	 *
  29. 	 * @return array
  30. 	*/
  31. 	protected function getPluginSetup() {
  32. 		return array(
  33. 				'host_name' => $this->avm['host'],
  34. 				'graph_order' => 'wlan',
  35. 				'graph_title' => 'AVM Fritz!Box WLAN Connections',
  36. 				'graph_category' => 'wlan',
  37. 				'graph_info' => 'This graph shows the current WLAN Connections.',
  38. 				'graph_vlabel' => 'Count of Connections',
  39. 				'graph_args' => '--base 1000'
  40. 		);
  41. 	}
  42.  
  43. 	/**
  44. 	 * Config for Graphs
  45. 	 *
  46. 	 * @return array
  47. 	 */
  48. 	protected function getPluginGraphs() {
  49. 		$graphs = array();
  50.  
  51. 		$graphs['wlan']['label'] = "WLAN Connections on 2.4 & 5 Ghz";
  52. 		$graphs['wlan']['info'] = "WLAN Connections on 2.4 & 5 Ghz";
  53.  
  54. 		return $graphs;
  55. 	}
  56.  
  57. 	/**
  58. 	 * Transform data from RAW HTML into XML Structure
  59. 	 *
  60. 	 * @param string $content
  61. 	 * @return data
  62. 	 */
  63. 	protected function transformData($content) {
  64. 		$doc = new DOMDocument();
  65. 		$doc->loadHTML($content);
  66. 		$tmp = simplexml_import_dom($doc);
  67.  
  68. 		$wlanCount = preg_replace("/[^0-9]/","", $tmp->body->table->tr[5]->td[1]);
  69.  
  70. 		$graphs['wlan'] = intval($wlanCount);
  71.  
  72. 		return $graphs;
  73. 	}
  74.  
  75. 	/**
  76. 	 * Read source & collecting values
  77. 	 *
  78. 	 * @return array
  79. 	 */
  80. 	protected function getValues() {
  81. 		$content = $this->readFromAvmGui("system/security.lua", "<table class=\"struct_wlan\">","<\/table>");
  82. 		$data = $this->transformData($content);
  83. 		return $data;
  84. 	}
  85.  
  86. }
  87.  
  88. $plugin = new AvmWlan($argv);
  89. $plugin->start($argv);
  90. ?>

Damit nun dieser Graph auch im Munin als separater Host angezeigt wird, muss in der /etc/munin.conf noch folgender Eintrag erfolgen:

[fritz.box]
     address 127.0.0.1
     use_node_name no

Anschließend den munin-node Dienst einmal neustarten und schon werden die Informationen angezeigt.

In den folgenden Artikeln werden wir weitere Plugins veröffentlichen.

[Windows 8.1] Ändern des Netzwerktyps von Öffentlichem zu privatem Netzwerk

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Bewertung vorhanden)
Loading...Loading...

Unser erster Artikel im neuen Jahr 2015, an dieser Stelle wünschen wir allen Lesern ein frohes neues Jahr und mögen all eure Vorsätze in Erfüllung gehen :)

Heute möchten wir Ihnen zeigen, wie Sie den Netzwerktyp in Windows 8.1 nachträglich ändern können. Hinweis: Dieser Tipp funktioniert nicht unter Windows 8, sondern nur unter Windows 8.1

Durch einen rechtsklick auf das Netzwerksymbol in der rechten unteren Ecke -> Netzwerk & Freigabecenter öffnen, öffnet sich ein neues Fenster in dem Sie unterhalb von “Aktive Netzwerke anzeigen” Ihre aktuellen Verbindungen sehen können. Unterhalb des Namens sehen Sie nun auch, auf welchem Netzwerk-Typ Ihr Netzwerk gerade eingestellt ist.

Um dies nun zu ändern, öffnen Sie die Charms-Bar (Mit der Maus nach rechts oben und dann runter ziehen, oder die Windows-Taste + C drücken), dort klicken Sie in der Mitte auf Einstellungen, anschließend unten auf PC Einstellungen. Im nun geöffneten Fenster wählen Sie links in der Navigation Netzwerk.

Klicken Sie dann auf Ihre aktuelle Netzwerkverbindung. (Trägt den gleichen Namen den Sie im Netzwerk & Freigabecenter gesehen haben). Anschließend erscheint eine neue Seite in der Sie im oberen Teil einen Schieberegler für Geräte und Inhalte suchen verändern können.

Ein = Privates Netzwerk
Aus = Öffentliches Netzwerk

geraete_und_inhalte_suchen

Anschließend können Sie alle Fenster wieder schließen.