Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
06.11.2003, 10:06
K-Putt



Ich arbeite für meine Firma grade an einem System zur verwaltung von pc's, drucker,server, switches. etc. und wollte nun einen Anzeige implementieren, ob das entsprechende Gerät läuft oder nicht.
Momentan hab ich das durch eine tcp-verbindung zum gerät gelöst, wenn diese fehlgeschlagen ist galt das gerät für mich als offline.

Leider funktioniert das nicht so wie es soll;
Ich öffne z.b. eine tcp verbindung zu einem rechner auf Port 80, das klappt natürlich nur wenn hinter diesem Port 80 ein Dienst läuft.
Natürlich hat net jeder Otto-normal Benutzer einen Webserver am laufen ;)

Also brauch ich irgend eine andere Art um den Status des Systems festzustellen, also on oder offline.
Das ganze musst plattform und geräte unabhängig sein, also sowohl unter windows/linux/unix'en als auch bei Netzwerkdruckern usw. funktionieren.

Ist sowas denn möglich? Im Prinzip bräuchte ich nur einen Port der bei allen Systemen vorhanden ist und eine tcp verbindung akzeptiert.

Ein anderer gedanke war an einen einfachen Ping per system() und aus dem Rückgabewert der Funktion mit diversen Stringfunktionen prüfen, obs der ping angekommen ist oder nicht.

Oder vielleicht gibt es eine andere Lösung die ich bis jetzt nur übersehen habe?

Danke schonmal im vorraus ;)

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
001
06.11.2003, 12:33
Chronial



Ich würde auch ein Ping versuchen
solange da nicht irgendwer personal Firewalls drauf hat, geht das auf jeden Fall.

--

"tsuji-giri" (japanisch) - ein neues Schwert an einem Passanten ausprobieren

zum Seitenanfang zum Seitenende Profil || Suche
002
06.11.2003, 12:35
K-Putt



Nein in der Firma hat sowieso kein User das Recht Programme zu isntallieren.

Ich dachte da gibts vielleicht ne einfachere Lösung als aus nem Ping Rückgabewert die ergebnisse heraus zu filtern,

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
003
06.11.2003, 13:17
Zeeke



Hi,

auf was für einem System läuft denn dein "System zur verwaltung von pc's, drucker,server, switches. etc."?

Wenn es auf einem Unix/Linux/.. läuft, ist das mit dem Ping recht einfach zu lösen, da der Befehl ping nur bei einem erfolgreichen Ping eine 0 als "Rückgabewert der Anwendung" hat.

Beispiel 1 (in einer Shell):
ping -c 1 rechner1
echo $?
Ausgabe: 0, da der Rechner anpingbar ist.

Beispiel 2:
ping -c 1 rechner234
echo $?
Ausabe: 2, der Rechner ist nicht anpingbar..

Hoffe, du hast verstanden, was ich meine.. so brauchst du die Ausgabe des Ping-Befehls nicht auswerten, sondern kannst einfach den "Rückgabewert" nehmen.

Ciao

--

zum Seitenanfang zum Seitenende Profil || Suche
004
06.11.2003, 14:52
[RMen]OneStone



Ping ist das einfachste, was erwartest du?! oO

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
005
06.11.2003, 14:53
apfelkorn



wenn du nicht mit einem skript sondern mit c arbeitest kannst du ja selber deinen ping machen.
http://ftp.arl.army.mil/pub/ping.shar (reintext)

--

zum Seitenanfang zum Seitenende Profil || Suche
006
06.11.2003, 15:12
K-Putt



@Zeeke das Skript läuft momentan auf einem Windows Rechner, wird bei Fertigstellung allerdings auf einen Webserver umziehn der unter Linux läuft.
Mit ping hab ichs bereits versucht, mit php's system() funktion, diese gibt allerdings die Standard ausgabe des ping befehls zurück (unter linux/win getestet).

@OneStone in diesem fall nicht, denn letztendlich will ich ne funktion haben wie
check($ip)
die entweder true zurückgibt wenn eine antwort von der ip kommt, bzw. false wenn keine antwort kommt.
Die Geräte werden aus einer Datenbank ausgelesen, und bei mehreren 100 Geräten kann das dauern bei verwendung des Ping befehls.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database


Dieser Beitrag wurde am 06.11.2003 um 15:14 von K-Putt bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
06.11.2003, 15:32
Zeeke



@K-Putt: Bei exec() kannst du dir aber den Rückgabewert der Anwendung geben lassen.. leichter geht's dann also wirklich nicht mehr :P

Ciao

--

zum Seitenanfang zum Seitenende Profil || Suche
008
06.11.2003, 15:36
[RMen]OneStone



K-Putt, du musst mit einem Rechner kommunizieren um den aktuellsten Stand zu erfahren, da ist Ping noch das einfachste! Und langsam ist das weisstgott nicht, auf keinen Fall langsamer als dein Connect-Versuch, weil der erst nach einem Timeout zurückkehrt. Du solltest es mit einem synchronem Ping versuchen!

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
009
06.11.2003, 15:43
Chronial



ja, ich denke pconnect wird das richtige sein.
Keine Erfahrung, aber das Script wartet dann glaub nicht auf die Beendung des Programmes.
Dadurch kannst du mehrere Pings gleichzeitig ausführen.

--

"tsuji-giri" (japanisch) - ein neues Schwert an einem Passanten ausprobieren

zum Seitenanfang zum Seitenende Profil || Suche
010
06.11.2003, 17:43
K-Putt



Besten Dank an alle hier, ich habs jetzt hingekriegt ;)

Um den Thread einen Sinn für die Nachwelt zu geben, hier mein kleines Skript:

ping.php
PHP-Quellcode:<?php
    $image_alive  
'alive.gif';
    
$image_dead   'dead.gif';
    
$result       = -1;
    
$unused       = array();

    if(!isset(
$_GET['name']))
        return;

    
//Linux/Unix
    
exec('ping '.$_GET['name'].' -c 1'$unused$result);

    
//Windows
    //exec('ping '.$_GET['name'].' -n 1', $unused, $result);
    
    
    
if(!$result)
        
Header('Location: '.$image_alive);
    else
        
Header('Location: '.$image_dead);
?>
Je nach Betriebssystem des Servers das exec() auskommentieren.

Benötigte Grafiken: |
Oder einfach im Code den Pfad/Namen einer anderen Datei angeben.

Verwendet werden kann das ganze dann so: ping.html

Vielleicht findets ja der eine oder andere ganz nützlich =)

[edit]Scheinbar unterstützt das ThwBoard keine dynamischen Bilder

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database


Dieser Beitrag wurde am 06.11.2003 um 17:54 von K-Putt bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
011
07.11.2003, 14:03
K-Putt



So, leider ist ein Dual Post nötig.

Diese verdammte Ping funktion :/

Sowohl unter Windows als unter Linux gibt der Ping befehl 0 zurück, wenn der Ping erfolgreich war.
Es wird aber auch 0 zurückgegeben, wenn eine Zeitüberschreitung aufgetreten ist!
Nur bei einem Fehler (hostname konnte nicht aufgelöst werden) wird 1 bzw. 2 beim Linux-ping zurückgegeben.

Was soll der scheiss bitte? Nun kann ich doch erst wieder net zwischen On und Offline unterscheiden :(

Kann mir da nochmal jemand unter die arme greifen? Denn soweit dass ich mir ein eigenes Ping programm in C schreiben muss wollte ich es eigentlich nicht kommen lassen.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
012
07.11.2003, 16:16
CN



wieso selbst schreiben? ;)

http://www.freebsd.org/cgi/cvsweb.cgi/src/sbin/ping/ping.c

--

zum Seitenanfang zum Seitenende Profil || Suche
013
07.11.2003, 16:40
K-Putt



Danke, aber was soll ich mit einem Programm das Headers benötigt, die nur in FreeBSD enthalten sind?
Oder sind das alles standard-c bibliotheken?

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
014
08.11.2003, 15:31
CN



denke schon .. ausser dem socketzeug und dem dadrüber das geht unter windows wohl so nich
aber du wirst wohl eh nich alle funktionen davon brauchen (umschreiben)

--

zum Seitenanfang zum Seitenende Profil || Suche