Ping Befehl in Datei ausführen

Horst_33

Lieutenant
Registriert
Dez. 2008
Beiträge
684
Hi,

ich hatte heute ma ne Idee für n kleenes Programm, was mein Alltag etwas erleichtern würde. Wir haben 4 PCs im Netz, wo ich nicht immer weiß, ob diese laufen. Um eine Anzeige zu haben, mach ich einfach nen ping befehlt.. des hat sich mittlerweile schon so automatisiert, dass ich es nicht missen möchte (könnte zwar auch bats schreiben, aber mir isses manuell irgendwie wohler).

Das einzige, was mich nervt, ist nach der zeit das CMD fenster (auch mit echo befehle). Daher hab ich mir ma sowas überlegt :)

A If ping 192.168.2.103 is true show MsgBox "Client 103 is Online"
B If ping 192.168.2.103 is goto:A

Ich hab zwar 0 Ahnung von Programmierung, aber nur ma so Mind-Map mäßig, vll. isses ja garnicht ma so kompliziert des Progrämmchen zu schreiben, wenn wer lust und laune hat. Bzw. erklären kann, wie ichs selber bauen könnt (bezweifel, dass ich so lernfähig bin^^)
 
Ich denke dass es da sicher schon fertige Lösungen gibt. Mein fli4l-Router zeigt die Onlineclients direkt auf der Startseite an. Wenn dein Router das nicht kann, dann kannst du dir ja mal den Advanced IP Scanner, AlertPing oder den Advanced Host Monitor ansehen (hab ich jetzt mal auf die Schnelle gefunden, wirds sicher auch andere Sachen geben).

Programmieren kann eigentlich jeder, man muss es halt lernen. Bei konkreten Programmierproblemen wird dir hier gerne geholfen aber ein komplettes Programm nach deinen Wünschen erstellen für lau? No.
 
ne access/vba lösung würde ich hinkriegen (ich blick nur vba, und das auch nur so halb :p).
Die frage ist, was willst du eigentlich?
4 statische PCs abpingen? einen ganzen bereich abpingen? auf knopfdruck nacheinander 4 fenster, jedes sagt einzeln "Client1 online", "Client2 online", oder eins das sagt: "clients 1,2,3,4 online!"???
Ich versteh das nicht so ganz, muss ich ehrlich sagen.
Bei vielen DOS befehlen Funktioniert folgender Syntax:
"ping 192.168.0.1 > c:\19216801.txt"
Dann wird eine txt im c root erzeugt, in der der DOS output steht.
Wenn du programmieren kannst, kannst du damit sicher was anfangen. In der Textdatei kannst du ja nach strings suchen.
Mit krücken würde das gehen.... Das hat nun mein interesse geweckt... ich poste bis morgen mal i-was.

*edit1: In nem Dos Fenster würde ich, denke ich, auch das hinkriegen, in C++... Mit ner messagebox, soweit bin ich noch net schulisch :p
 
Zuletzt bearbeitet:
Google mal nach dem Programm Superscan. Stell da einfach den IP-Bereich Deiner Rechner ein, Start drücken und nach kurzer Zeit siehst Du, welcher Rechner da ist und welcher nicht.
 
hi,

...wenn wer lust und laune hat. Bzw. erklären kann, wie ichs selber bauen könnt..

Vielleicht kommt das folgende Programm deine Vorstellungen nah. Wenn du es Kompilieren willst, lad dir „Microsoft Visual C++ 2008 Express“ runter und installier es.

Code:
// erstellen:   mit MS Visual C++ 2008 Express (einfach mal googlen),
//          -   (Menü) Datei->Neues Projekt->Win32->Win32-Konsolenanwendung-> Name angeben z.B. "pingit" ->Ok->Fertigstellen
//          -   im nun erscheinenden Quellcode alles löschen und diesen einfügen
//          -   (Menü) Projekt-> pingit-Eigenschaften -> Konfigurationseigenschaften->Allgemein->Zeichensatz->"nicht festgelegt"
//  Kompitieren und Starten:
//          -   "grünen Pfeil" in der Menüleiste drücken (man kann daneben zwischen Release und Debug wählen)

#include "stdafx.h" //
#include <iostream>
#include <windows.h>
#include <string.h>

void pingit(char* Addr,char* TmpFileName);

int main()
{
    SetConsoleOutputCP(1252);

    printf("Adresse               Status\n");
    pingit("www.computerbase.de  ","tmp.txt");  // <----------- hier ändern
    pingit("www.spiegel.de       ","tmp.txt");  //                "      "
    //pingit("...","tmp.txt");
    //...
    printf("\nEingabe zum beenden drücken");
    getchar();
}

void pingit(char* Addr,char* TmpFileName)
{
    char buffer[256];
    sprintf(&buffer[0],"ping %s>%s",Addr,TmpFileName);

    HANDLE hFile;
    system(&buffer[0]);
    if((hFile=CreateFile(TmpFileName,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0)) !=  INVALID_HANDLE_VALUE)
    {
        DWORD nBytes;
        char* lpFile;
        lpFile = (char*) GlobalAlloc(GPTR,GetFileSize(hFile,0)+1);
        ReadFile(hFile,lpFile,GetFileSize(hFile,0),&nBytes,NULL);
        if(strstr(lpFile,"Empfangen = 4") != 0)
        {
            printf("%s erreicht\n",Addr);
        }
        else
        {
            printf("%s unerreichbar\n",Addr);
        }
        CloseHandle(hFile);
        DeleteFile(TmpFileName);
        GlobalFree((HGLOBAL)lpFile);
    }
    else
    {
        printf("Fehler während der abfrage von %s",Addr);
    }
}
 
Zurück
Oben