Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Offtopic > Gesuche > Monitoring für einen PC im Netzwerk
Antwort
 
Themen-Optionen
Alt 24.02.2008, 21:19   Nach oben    #1
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 481
Standard Monitoring für einen PC im Netzwerk

Hallo,

wie kann ich speichern, wann ein PC online gegangen ist, bzw im Netzwerk erreichbar ist?
Mein Grundansatz ist folgender:
Mit "ping" kann ich ja prüfen ob ein PC erreichbar ist. Soweit ja dass was ich möchte.
Das ganze sollte möglichst dann so in einer Datei gespeichert werden:
Code:
//timstamp=status
1203807600=true // PC ist online/erreichbar
1203907600=true // PC ist online/erreichbar
1204007600=true // PC ist online/erreichbar
1204107600=true // PC ist online/erreichbar
1204207600=true // PC ist online/erreichbar
1204312400=false // PC ist NICHT online/erreichbar
1204412400=false // PC ist NICHT online/erreichbar
Leider weiß ich nicht wie ich sowas hinbekomm. Habt ihr eine Idee?
Oder gibt es ein gutes Programm für sowas?

Der PC der geprüft werden soll ist ein WindowsVista, der PC der prüft ist Kubuntu 7.10
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.02.2008, 20:49   Nach oben    #2
Erfahrener Benutzer
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
Standard

Also ich habe bei mir zu Hause auf meinem lokalen Linux-Server ein Script als Cron-Job laufen, was prüft, ob wenigstens einer der Rechner erreichbar ist und sollte das 15 Minuten nacheinander nicht der Fall sein, wird er heruntergefahren. Ist denke ich genau das, was du suchst, nur halt ohne das Runterfahren. Allerdings benutze ich eine Datenbank dazu, das müsstest du dann umschreiben:

PHP-Code:
<?php
$arrayIpAddresses 
= array ('192.168.1.100',
                           
'192.168.1.101',
                           
'192.168.1.102'
                           
);

$booleanCheckIp FALSE;

foreach (
$arrayIpAddresses AS $integerKey => $stringIpAddress)
{
  
$stringOutput shell_exec ('ping -c 1 '.$stringIpAddress);

  if (
preg_match ('°([\d]{1,3})% packet loss°is',
                  
$stringOutput,
                  
$arrayResult
                  
) > 0
      
)
  {
    if (
intval ($arrayResult[1]) == 0)
    {
      
$booleanCheckIp TRUE;
    }
  }
}

unset (
$integerKey,
       
$stringOutput,
       
$arrayResult,
       
$stringIpAddress
       
);

mysql_connect ('localhost',
               
'shutdown',
               
'***'
               
);

mysql_select_db ('shutdown');

mysql_query ('INSERT INTO `time` (`check`) VALUES (\''.(($booleanCheckIp === TRUE) ? '1' '0').'\')');

$integerCheck 0;
$integerCount 0;

$resourceRequest mysql_query ('SELECT `check` AS `integerCheck` FROM `time`');

while (
$arrayResult mysql_fetch_assoc ($resourceRequest))
{
  
$integerCheck += intval ($arrayResult['integerCheck']);
  
$integerCount++;
}

mysql_free_result ($resourceRequest);

unset (
$resourceRequest,
       
$arrayResult
       
);

mysql_query ('DELETE FROM `time` WHERE UNIX_TIMESTAMP(`datetime`)<\''.(time () - (60 15)).'\'');

mysql_query ('OPTIMIZE TABLE `time`');

if (
$integerCheck == 0
AND $integerCount 12
    
)
{
  
sleep (10);
  
shell_exec ('/sbin/init 0');
}
?>
Und die Datenbanktabelle dazu:

Code:
CREATE TABLE IF NOT EXISTS `time` (
  `datetime` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `check` tinyint(3) unsigned NOT NULL default '0',
  PRIMARY KEY  (`datetime`),
  KEY `check` (`check`)
) ENGINE=MyISAM;
Bitte nicht hauen, dass ich einen TINYINT für die Speicherung von "An" bzw "Aus" genommen habe *duck*

EDIT: Achso, pass auf, dass dein Windows-Rechner auch wirklich pingbar ist, denn vor ein paar Monaten hatte ich das Problem, dass Pingechos scheinbar durch ein Online-Update von MS deaktiviert wurde, wodurch mein Server nach 15 Minuten immer wieder abgeschaltet hat.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.02.2008, 15:19   Nach oben    #3
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 481
Standard

Das Skript muss doch dann mit Root Rechten laufen oder? Oder kann jeder shell_exec ausführen? ping braucht ja erstmal keine Root Rechte.
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.02.2008, 16:57   Nach oben    #4
BIN EIN KRASSA HELD!!!111
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
Standard

Zitat:
Zitat von MrNiceGuy Beitrag anzeigen
Bitte nicht hauen, dass ich einen TINYINT für die Speicherung von "An" bzw "Aus" genommen habe *duck*
Sollte nichts dagegen sprechen, neuere MySQL-Versionen haben BOOLEAN, aber intern ist der BOOLEAN auch wieder ein TINYINT ( http://dev.mysql.com/doc/refman/5.1/...html#id1358264 )

http://phpperformance.de/boolesche-werte-in-mysql/

Zitat:
Zitat von Jan Beitrag anzeigen
Das Skript muss doch dann mit Root Rechten laufen oder? Oder kann jeder shell_exec ausführen? ping braucht ja erstmal keine Root Rechte.
jenachdem wie php gebastelt ist und welche zugriffsrechte dein bin-verzeichnis hat in dem die ping-binary liegt, kann shell_exec zugreifen oder nicht.

konfigurationsparameter die mir gerade einfallen die relevant sein könnten: open_basedir, safemode und dann der user unter dem webserver/php läuft + wem die datei gehört.

Geändert von robo47 (26.02.2008 um 17:00 Uhr).
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.02.2008, 17:46   Nach oben    #5
Erfahrener Benutzer
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
Standard

Also bei mir läuft das Script als root-User, da es schlichtweg einfacher ist. Alelrdings rufe ich es nicht über den Webserver auf, sondern mit dem Console-Parser von PHP, somit ist eine Manipulation eigentlich ausgeschlossen, es sei denn der User hat Root-Rechte auf das PHP-Script, da dieses 700 mit root:root als Sicherheitseinstellung hat.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.03.2008, 14:14   Nach oben    #6
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 481
Standard

Ok, ich habs jetzt mal so versucht, aber bei dem regulären Ausdruck meckert er. Irgendwas stimmt da nicht, kann es sein? Was bedeutet das "°"?
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.03.2008, 11:53   Nach oben    #7
Erfahrener Benutzer
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
Standard

Achso, ja, es hängt natürlich vom Betriebssystem ab, wie die Meldung aussieht, die ping zurückliefert. Der '°' ist der Delimiter des RegEx, viele benutzen '/', aber das Zeichen benötige ich in vielen RegEx zu oft als Zeichen und wollte nicht immer mit '\' arbeiten, deswegen habe ich '°' als Delimiter genommen, da ich dieses Zeichen eigentlich nie benötige. Ansonsten ließt der RegEx eigentlich nur die Prozente der "packet lost" aus, sprich: wenn der Rechner nicht anpingbar ist (es wird durch den Befehl 'ping -c 1 {IP_ADDRESS}' ja immer nur ein Ping gesendet), steht in der Rückmeldung '100% packet loss', ansonsten '0% packet loss'. Deswegen der RegEx, der mindestens ein bis maximal drei Zahlzeichen einließt.

Der Befehl muss je nach Betriebssystem natürlich auch noch angepasst werden, bei Windows macht er ja standardmäßig (nur der Befehl 'ping {IP_ADDRESS}') 4 Pings und hört dann auf. Unter Linux macht er ja bis unendlich weiter, es sei denn man gibt ihm mit '-c 1' einen 'count' mit, wie oft er pingen soll. Aus performancetechnischer Sicht macht es aber auch keinen Sinn mehrfach zu pingen, da lediglich die generelle Erreichbarkeit geprüft werden soll. Bei Windows sieht die Meldung bzgl. der verlorenen Pakete übrigens so aus: '0% Verlust' bzw. '100% Verlust'. Außerdem ist es nicht '-c', sondern '-n', welches die Anzahl der Pings einstellt. Entsprechend ist der Befehl und der RegEx auf Windows bzw. für das jeweilige Betriebssystem anzupassen.

Mein Script läuft im Übrigen unter OpenSuSE Linux 10.x.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.03.2008, 13:28   Nach oben    #8
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 481
Standard

Ok, nutzte Linux.
Also entspricht ° bei dir einem / bei mir?
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.03.2008, 14:19   Nach oben    #9
Erfahrener Benutzer
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
Standard

Zitat:
Zitat von Jan Beitrag anzeigen
Ok, nutzte Linux.
Also entspricht ° bei dir einem / bei mir?
Scheinbar schon!? Du kannst ja auch ein 'a' als Delimiter nutzen, das ist ja vollkommen egal.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.03.2008, 14:51   Nach oben    #10
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 481
Standard

Ok. Werd es mal anpassen und probieren.
Ansonsten vielen Dank. Monitoring läuft wunderbar
Auf euch alle hier kann man sich echt verlassen
Wo kann man wählen was man als Delimiter nutzten möchte?
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.03.2008, 16:34   Nach oben    #11
Erfahrener Benutzer
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
Standard

Zitat:
Zitat von Jan Beitrag anzeigen
Ok. Werd es mal anpassen und probieren.
Ansonsten vielen Dank. Monitoring läuft wunderbar
Auf euch alle hier kann man sich echt verlassen
Wo kann man wählen was man als Delimiter nutzten möchte?
Der Delimiter ist immer das erste Zeichen eines RegEx. Bei '°[0-9]°' ist es '°', bei '/[0-9]/' ist es '/', etc.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.03.2008, 18:04   Nach oben    #12
Jan
Erfahrener Benutzer
 
Benutzerbild von Jan
 
Registriert seit: 08.01.2006
Ort: Mannheim
Beiträge: 481
Standard

Ok, danke für die Erklärung.

Ich muss das nciht irgendwo global oder lokal definieren, sondern kann es für jeden Ausruck neu definieren?!
__________________
Jan
info.malte-gerth.de
=================================
Nutzt bitte lieber Jabber statt ICQ:
malte.gerth@jabber.cz
Jan ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.03.2008, 19:58   Nach oben    #13
Erfahrener Benutzer
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
Standard

Japp
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Byte[]übertragung im Netzwerk jm14 Allgemeine Java-Programmierung 1 08.01.2006 18:31
Kommunikation im Netzwerk von 2 Java Programmen missiju Allgemeine Java-Programmierung 3 24.11.2005 18:55
Netzwerk / Thread syncronisieren sparrow Allgemeine Java-Programmierung 4 16.11.2005 21:11
Socket und Lokales Netzwerk. wwwsteel Allgemeine Java-Programmierung 5 22.10.2004 17:09


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:13 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44