80851
Goto Top

IP pingen ?

Hallo zusammen,

leider finde ich keine Lösung für mein Problem.

Mein Problem ist das ich keine Ahnung von Batch-Dateien habe und gerne Grundlagen oder ein schönes wiki gefunden hätte.
So bin ich bei euch gelandet, für Tipps oder Hinweise die mich zur Lösung führen könnten wäre ich sehr dankbar.

Problem,
Ich möchte eine Batch als Dienst im Hintergrund alle 10 Minuten lassen.
Die Batch soll folgendes tun,

Ich möchte einen Solar-Wechselrichter anpingen und bei Bedarf den eigenen Rechner Neustarten um ein Ausleseprogramm neustarten zu können.


Ping => Ziel-IP
IF Ziel-IP erreichbar UND Merker "nicht gesetzt"
Goto ENDE
Das Skript soll nichts tuen wenn erreichbar

ELSE
{
IF Merker "nicht gesetzt"
setze Merker

ELSE Merker "gesetzt" UND Ziel-IP erreichbar
Starte den Rechner neu
Nur wenn der Merker gesetzt wurde und die IP wieder erreichbar soll der Rechner wieder gestartet werden

}


So stell ich mir die Funktionsweiße vor, könnt ihr mir helfen bzw. Tipps und/oder Denkanstösse geben ?

Vorab vielen Dank !

Content-Key: 121001

Url: https://administrator.de/contentid/121001

Printed on: April 19, 2024 at 16:04 o'clock

Member: SchoSeb
SchoSeb Jul 21, 2009 at 18:30:28 (UTC)
Goto Top
Hallo mike,

ich darf also zusammenfassen:
Alle x Minuten Ping....
sollte ein Durchlauf nich erfolgreich gewesen sein, aber einer der folgenden schon sollt der PC neugestartet werden.

Was passiert wenn der Ping gar nicht mehr erfolgreich sein sollte?
Warum willst du den ganzen PC neustarten und nicht nur dieses Ausleseprogramm?
Ach ja, sprechen wir von einem Windows oder Linux Rechner?

MfG Sebastian
Mitglied: 80851
80851 Jul 21, 2009 at 19:57:05 (UTC)
Goto Top
Hallo,

ja wir sprechen von win2k (einer virtuellen Maschine auf einem Server).....wenn möglich würde auch ein Programmneustart reichen.

Der Wechselrichter ist über das Netzwerk errreichbar (pingbar und vom Herstellerprogrammauslesbar)....trennt sich aber Nachts vom Stromnetz, und ist somit nicht anpingbar. Das Programm erkennt leider nicht wenn es läuft, dass der Wechselrichter wieder erreichbar ist....erst nach einem Programmneustart....wird die Verbindung erneut aufgebaut.

Problem ist...nicht wenn der WS nicht mehr Erreichbar ist, einen Neustart durchführen (sonst würde der Rechner die ganze Nacht neustarten), sondern wenn er nach dem nicht erreichen wieder erreichbar wird......wenn du verstehst was ich meine ?
Mitglied: 60730
60730 Jul 21, 2009 at 21:48:59 (UTC)
Goto Top
Servus,

so pi * daumen wird es ungefähr so laufen:

:start
ping 127.0.0.1 | find "TTL" && goto start  ||  taskkill /F /IM "Notepad.exe" && goto offline  

:offline
ping 127.0.0.1 | find "TTL" && start "Analyse" Notepad.exe  ||  goto start  
goto start

wobei
rem sprungmarke :start 
rem ping den eigenen Rechner (zum Test - dort die IP des Ziels eintragen) | finde ob es antwortet und gehe zu start  || setze den Marker bzw. kicke das Auswerteprogramm um so den Marker zu setzen (oder nicht noch einen Marker nutzen zu müssen) " && gehe zu offline (das erstwieder verlassen wird - wenn status online)  

:offline
rem ping den eigenen Rechner (zum Test - dort die IP des Ziels eintragen) | finde ob es antwortet und && start "überschrift" auswertungsprogramm.exe   ||  gehe zum start  
rem damit die "Schleife" auch wieder weiter geht wenn nach offline wieder online ist - gehe zum start  

Daraus kannst du dir sicherlich noch die ein oder andere Verbesserung selber zusammenstricken - jeder der Befehle hat einen Parameter /? - der die die "echten" parameter zeigt.

Gruß
Member: SchoSeb
SchoSeb Jul 21, 2009 at 22:02:38 (UTC)
Goto Top
Also ich hoffe ich werde von den Batch Gurus nicht gleich verprügelt, aber hier meine (verspätete) Lösung face-smile
Ist nur so zusammengebastelt und ich bin natürlich über jede Verbesserung dankbar.

edit
OK , 6 Zeilen im Vergleich zu 35 würd ich schon als Verbessereung Bezeichnen face-big-smile

@echo off
set /a merker = 0

:test

set /a ping_success = 0

ping -n 1 "IP des WS"  
set /a ping_success = %ERRORLEVEL% + %merker%
if %ping_success% == 0 (goto wait)

:: Merker=1 und Ziel nicht erreichbar
if %ping_success% == 2 (goto wait)

:: Wenn die oberen Bedingungen nicht erfüllt werden...
if %merker% == 0 (goto set_merker)

if %merker% == 1 (goto restart)

goto test

:set_merker
set /a merker = 1
goto wait

:wait
ping -n 60 localhost
goto test

::Anwendung beenden und neu starten
:restart
tskill "programname aus dem taskmanager ohne .EXE"  
start C:\Pfad_zum_Programm\programm.exe
set /a merker = 0
goto test

Das wait ist natürlich nur ne Bastellösung(hier ca 60 Sekunden Wartezeit) Du kannst dir ja die wait.exe laden und das ganze damit lösen.
Grundsätzlich sollte das ganze jedoch funktionieren face-smile

MfG Sebastian
Mitglied: 80851
80851 Jul 22, 2009 at 20:29:41 (UTC)
Goto Top
Vielen Dank für eure rasant schnellen Antworten,

Ich habe das ganze mit 2 vm´s nachgestellt, das ganze geht soweit auch ganz gut.....
:start 
ping 192.168.237.128 | find "TTL" && goto start || taskkill  
taskkill /F /IM "javaw.exe" && goto offline   

:offline 
ping 192.168.237.128 | find "TTL" && start   
"Analyse" "MaxTalk 1.7.9.exe"  ||  goto start  
goto start

Das Auswerteprogramm ist in java geschrieben deswegen beende ich die javaw.exe
Die Batch erkennt wenn die Ziel IP-Offline ist und killt den Task.....aber wenn das Ziel wieder erreichbar ist start er das Auswerteprogramm "MaxTalk" nicht mehr........
liegt es an meiner Syntax =?
Müsste doch eigentlich gehen ?

Gruß

mikebelo

P.S. Der nächsten Lösungsvariante werde ich mich jetzt widmen...... face-smile
Mitglied: 80851
80851 Jul 22, 2009 at 21:31:01 (UTC)
Goto Top
Habe mich mittlerweile für die 1. Variante entschieden,
:start 
ping 192.168.88.128 | find "TTL" && goto start || taskkill  
taskkill /F /IM "javaw.exe" && goto offline   

:offline 
ping 192.168.88.128 | find "TTL" && start "Analyse" C:\Programme\solarmax\maxtalk_179\MaxTalk 1.7.9.exe ||  
||  goto start
goto start

geht eigentlich.....nur noch ein Haken hat die Sache.......siehe die DOS-Ausgabe.....
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Dokumente und Einstellungen\mischl>cd Desktop

C:\Dokumente und Einstellungen\mischl\Desktop>nummer1.bat

C:\Dokumente und Einstellungen\mischl\Desktop>ping 192.168.88.128   | find "TTL"  
   && goto start   || taskkill
Antwort von 192.168.88.128: Bytes=32 Zeit=2ms TTL=64
Antwort von 192.168.88.128: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.88.128: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.88.128: Bytes=32 Zeit<1ms TTL=64

C:\Dokumente und Einstellungen\mischl\Desktop>ping 192.168.88.128   | find "TTL"  
   && goto start   || taskkill
Antwort von 192.168.88.128: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.88.128: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.88.128: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.88.128: Bytes=32 Zeit<1ms TTL=64

C:\Dokumente und Einstellungen\mischl\Desktop>ping 192.168.88.128   | find "TTL"  
   && goto start   || taskkill
Antwort von 192.168.88.128: Bytes=32 Zeit<1ms TTL=64

C:\Dokumente und Einstellungen\mischl\Desktop>ping 192.168.88.128   | find "TTL"  
   && goto start   || taskkill
FEHLER: Ungültige Syntax. /FI, /PID oder /IM wurde nicht angegeben.
Geben Sie "TASKKILL.EXE/-?" ein, um die Syntax anzuzeigen.  

C:\Dokumente und Einstellungen\mischl\Desktop>taskkill /F /IM "javaw.exe"   && g  
oto offline
ERFOLGREICH: Der Prozess "javaw.exe" mit PID 2200 wurde beendet.  
Syntaxfehler.

C:\Dokumente und Einstellungen\mischl\Desktop>ping 192.168.88.128 | find "TTL" &  
& start "Analyse" C:\Programme\solarmax\maxtalk_179\MaxTalk 1.7.9.exe ||  

C:\Dokumente und Einstellungen\mischl\Desktop

Wenn ich nicht innerhalb < 1min den WS (also die IP) wieder aktiviere beendet die Batch ihren Dienst.....wenn ich die IP innerhalb < 1min wieder freigebe....startet die Batch automatisch das MaxTalk und MaxTalk beginnt dann wieder mit der Auslesung.

Könnt ihr mir nochmal den letzten und entscheidenden Hinweis geben ???
Mitglied: 60730
60730 Jul 23, 2009 at 07:19:13 (UTC)
Goto Top
Servus,

Könnt ihr mir nochmal den letzten und entscheidenden Hinweis geben ???

ändere die erste Variante bitte nur - indem du die zu pingende IP und das zu beendende/zu startende Programm editierst.

Du hast da noch ein wenig anderes verändert - und deswegen mags nicht ;-(

:start
ping 192.168.88.128 | find "TTL" && goto start  ||  taskkill /F /IM "javaw.exe" && goto offline  

:offline
ping 192.168.88.128 | find "TTL" && start "Analyse" "C:\Programme\solarmax\maxtalk_179\MaxTalk 1.7.9.exe"  ||  goto start  
goto start

Die Ausgabe:

28. FEHLER: Ungültige Syntax. /FI, /PID oder /IM wurde nicht angegeben.
29. Geben Sie "TASKKILL.EXE/-?" ein, um die Syntax anzuzeigen.

kommt von


Gruß
Mitglied: 80851
80851 Jul 26, 2009 at 11:00:50 (UTC)
Goto Top
Habsch gemacht und es geht wunderbar....ich muss platt ausgedrückt sagen, du bist ne geile Typ !!

Vielen Dank !

Danke auch an alle anderen die mir so schnell weitergeholfen haben !!

Danke Danke Dank!

Vielleicht kann ich euch oder jemand anders bei Gelegenheit auch weiterhelfen !

Gruß
mikeobelo
Hotly discussed
gleixnerdCheck of ZFW Firewallgleixnerd - 3 CommentsAlexWishaHow to set up and configure a Linux GRE tunnelAlexWisha - 3 CommentsjstrickerWIREGUARD VPN ON UDM PRO BEHIND FRITZBOX - HANDSHAKE DID NOT COMPLETEjstricker - 3 CommentsDaniEnd of Support dates for Office 2016, 2019 Apps und Productivity ServersDani - 1 Comment