(gelöst) Ping durchführen, bei erfolgreichem Ping Datei kopieren, nicht erfolgreich count 3 Loops abort, endlosschleife

Antworten
G23
Beiträge: 16
Registriert: 20. Jan 2021, 17:08
Kontaktdaten:

(gelöst) Ping durchführen, bei erfolgreichem Ping Datei kopieren, nicht erfolgreich count 3 Loops abort, endlosschleife

Beitrag von G23 » 27. Jan 2021, 15:23

Hallöchen,


Aufgabe:
Ein Paket soll an alle Mitarbeiter verteilt werden.
1. es soll einen cmd ausführen und einen internen Server anpingen,
1.1 wenn es Erfolgreich ist, der Server pingbar ist, eine Datei auf den PC überträgt.
1.2 wenn es nicht Erfolgreich ist, der Server nicht pingbar ist, -> 2.
2. Zeit X warten
3. Anzahl an läufen Y durchführen
4. Wenn es nicht erfolgreich ist, Abbruch nur über Empirum zurück melden
5. Wenn es erfolgreich ist, siehe 1.1 und Success über Empirum zurück melden.

Problem:
Momentan hängt es jedoch am "For Counter", er läuft endlos im loop durch und hört nicht nach den gesetzten 3 Durchläufen auf.


Info:
"localhos" wurde genommen um eine nicht mögliche Verbindung zu emulieren. Bei "localhost" funktioniert die Installation und alles beendet korrekt
_____________________________

Code: Alles auswählen


[Product]
;#FileCheckMachine, MACHINE
;#FileCheckClient, CLIENT
;ReplaceEnv <Variable>

#Set:User, DONTDELETE CLIENT
#Reg:OnUninstallProduct, DELETE
#Reg:Product, DONTDELETE
#Ini:Product, DONTDELETE
#Security:Product
#Set:Uninstall, DELETE

[Set:User]
If Counter == "3" Then "NoConnection" EndIf
If GetDCName() == "" Then "NoDomainController" EndIf
Sleep 36
Call cmd /c "ping localho -n 1" 
If %Errorlevel% == 0 Then "UpSig" EndIf
If %Errorlevel% == 1 Then "next_try" EndIf

[next_try]
For Counter,1,3,,"Set:User" else "NoDomainController"

[UpSig]
callhidden cmd /c "%logonserver%\path\filename.vbs"

[NoDomainController]
ErrorLogMsg "Keine Verbindung zum Server"
Abort

[NoConnection]
Echo "Keine Verbindung zum Server"
Abort

________________________________

Zur Information ich habe bereits folgende Versuche durchgeführt:
Den Eintrag: "For Counter,1,5,,Set:User" habe ich auch wie folgt getestet:

For Counter,1,5,1,Set:User
= endlosschleife

For Counter,1,5,1,%Set:User%
= Fehlermeldung

For Counter,1,5,1,"Set:User"
= Restart von der Installation

V3

Code: Alles auswählen

[Set:User]
If Counter == "3" Then "NoDomainContoller" EndIf
If GetDCName() == "" Then "NoDomainController" EndIf
Sleep 36
Call cmd /c "ping localho -n 1" 
If %Errorlevel% == 0 Then "UpSig" EndIf
If %Errorlevel% == 1 Then "next_try" EndIf

[next_try]
For Counter,1,5,1,Set:User
#NoDomainController

[UpSig]
callhidden cmd /c "logonserver%\path\filename.vbs"

[NoDomainController]
ErrorLogMsg "Keine Verbindung zum Server"
Abort
_____________________________

V2

Code: Alles auswählen

[Set:User]
If Counter == "3" Then "NoDomainContoller" EndIf
If GetDCName() == "" Then "NoDomainController" EndIf
Sleep 36
Call cmd /c "ping localhos -n 1" 
If %Errorlevel% == 0 Then "UpSig" EndIf
If %Errorlevel% == 1 Then "next_try" EndIf

[next_try]
For Counter,1,5,,Set:User
#NoDomainController

[UpSig]
callhidden cmd /c "logonserver%\path\filename.vbs"

[NoDomainController]
ErrorLogMsg "Keine Verbindung zum Server"
Abort
Zuletzt geändert von G23 am 28. Jan 2021, 14:09, insgesamt 1-mal geändert.

Benutzeravatar
Hendrik_Ambrosius
Moderator
Moderator
Beiträge: 7731
Registriert: 13. Dez 2004, 23:10
Wohnort: Adendorf/Lüneburg

Re: Ping durchführen, bei erfolgreichem Ping Datei kopieren, nicht erfolgreich count 3 Loops abort, endlosschleife

Beitrag von Hendrik_Ambrosius » 27. Jan 2021, 16:15

Hier ist glaube ich der FOR Aufruf an der falschen Stelle.
Er muss aus der übergelagerten Sektion erfolgen, also z.B. SET:Product, und dann die Unterroutine 3 mal aufrufen.
Eigentlich kann man sich dann auch die IF COUNTER Abfrage sparen weil er in die Zeile nach dem FOR Aufruf nur kommt wenn der Counter abgelaufen ist. Ansonsten muss man vorher den Absprung aus einer per ERRORLEVEL angesprungenen Sektion mit ABORT oder EXIT machen.

Beispiel:

[SET:Product]
...
For Counter,1,3,1,Set:Loop

...

[Set:Loop]
If Counter == "3" Then "NoConnection" EndIf
Sleep 3
echo ping %counter%
Call cmd /c "ping localhost -n 1"
...errorlevel checks...

[NoConnection]
Echo "ENDE"
Abort
Hendrik Ambrosius / Senior Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 AG | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com

Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 AG or of the support team.

G23
Beiträge: 16
Registriert: 20. Jan 2021, 17:08
Kontaktdaten:

Re: Ping durchführen, bei erfolgreichem Ping Datei kopieren, nicht erfolgreich count 3 Loops abort, endlosschleife

Beitrag von G23 » 27. Jan 2021, 16:42

Vielen Dank für die schnelle Rückmeldung :-)

Die Idee ist sehr gut, jedoch gibt mit der Echo jedesmal den Ping 1 aus, bei mir geht der Ping Count weiterhin nicht höher und läuft mehr als 3 x durch, aber vielleicht habe ich deine Idee falsch umgesetzt?

Code: Alles auswählen


[Product]
;#FileCheckMachine, MACHINE
;#FileCheckClient, CLIENT
;ReplaceEnv <Variable>

#Set:User, DONTDELETE CLIENT
#Reg:OnUninstallProduct, DELETE
#Reg:Product, DONTDELETE
#Ini:Product, DONTDELETE
#Security:Product
#Set:Uninstall, DELETE

[Set:User]
If GetDCName() == "" Then "NoDomainController" Else "Set:Product" EndIf

[Set:Product]
For Counter,1,3,1,"Set:Loop"

[Set:Loop]
If Counter == "3" Then "NoConnection" EndIf
Sleep 3
Echo ping %counter% 
Call cmd /c "ping localho -n 1"
If %Errorlevel% == 0 Then "UpSig" EndIf
If %Errorlevel% == 1 Then "Set:Product" EndIf

[UpSig]
callhidden cmd /c "%logonserver%\path\file.vbs"

[NoDomainController]
ErrorLogMsg "Keine Verbindung zum Server"
Abort

[NoConnection]
Echo "ENDE"
Abort

Der Versuch den Wert bei "If Counter == "2" Then "NoConnection" EndIf" zu setzen, zieht auch nicht mit dem Code, er läuft weiterhin auf endlosen loop, jedoch wirft er schön den ping 2 aus, bei jedem Versuch

Code: Alles auswählen

[Set:Product]
For Counter,2,4,2,"Set:Loop"

[Set:Loop]
If Counter == "2" Then "NoConnection" EndIf
Sleep 3
Echo ping %counter% 
Call cmd /c "ping localho -n 1"
If %Errorlevel% == 0 Then "UpSig" EndIf
If %Errorlevel% == 1 Then "Set:Product" EndIf



selbst mit folgender Änderung bei --- For Counter,2,2,2,"Set:Loop" --- bleibt es in einem ewigem Loop, geht es den bei Ihnen in der Testumgebung?

Code: Alles auswählen


[Set:Product]
For Counter,2,2,2,"Set:Loop"

[Set:Loop]
If Counter == "2" Then "NoConnection" EndIf
Sleep 3
Echo ping %counter% 
Call cmd /c "ping localho -n 1"
If %Errorlevel% == 0 Then "UpSig" EndIf
If %Errorlevel% == 1 Then "Set:Product" EndIf

[UpSig]
callhidden cmd /c "%logonserver%\netlogon\ci-sign\ci-sign-net.vbs"

[NoDomainController]
ErrorLogMsg "Keine Verbindung zum Server"
Abort

[NoConnection]
Echo "ENDE"
Abort

Benutzeravatar
Hendrik_Ambrosius
Moderator
Moderator
Beiträge: 7731
Registriert: 13. Dez 2004, 23:10
Wohnort: Adendorf/Lüneburg

Re: Ping durchführen, bei erfolgreichem Ping Datei kopieren, nicht erfolgreich count 3 Loops abort, endlosschleife

Beitrag von Hendrik_Ambrosius » 27. Jan 2021, 16:57

Schon mal Set:Loop ohne Anführungszeichen versucht?
Hendrik Ambrosius / Senior Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 AG | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com

Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 AG or of the support team.

G23
Beiträge: 16
Registriert: 20. Jan 2021, 17:08
Kontaktdaten:

Re: Ping durchführen, bei erfolgreichem Ping Datei kopieren, nicht erfolgreich count 3 Loops abort, endlosschleife

Beitrag von G23 » 28. Jan 2021, 11:26

Vielen Dank für den Hinweis, leider ist dies ohne Erfolg.

Nach wie vor, wird der Counter des Pings nicht erhöht, er wird jedes mal aufs neue von 0 an gezählt und gibt nur den ersten Count an.

"For Counter,1,2,1,Set:Loop" wirft mir "Echo ping %counter%" wieder eine 1 aus
"For Counter,2,2,2,Set:Loop" wirft mir "Echo ping %counter%" wieder eine 2 aus und führt keinen Abbruch durch, sondern springt wieder hoch zu

Code: Alles auswählen


[Product]
;#FileCheckMachine, MACHINE
;#FileCheckClient, CLIENT
;ReplaceEnv <Variable>

#Set:User, DONTDELETE CLIENT
#Reg:OnUninstallProduct, DELETE
#Reg:Product, DONTDELETE
#Ini:Product, DONTDELETE
#Security:Product
#Set:Uninstall, DELETE

[Set:User]
If GetDCName() == "" Then "NoDomainController" Else "Set:Product" EndIf

[Set:Product]
For Counter,2,2,2,Set:Loop

[Set:Loop]
If Counter == "2" Then "NoConnection" EndIf
Sleep 3
Echo ping %counter% 
Call cmd /c "ping localho -n 1"
If %Errorlevel% == 0 Then "UpSig" EndIf
If %Errorlevel% == 1 Then "Set:Product" EndIf

[UpSig]
callhidden cmd /c "%logonserver%\path\filename.vbs"

[NoDomainController]
ErrorLogMsg "Keine Verbindung zum Server"
Abort

[NoConnection]
Echo "ENDE"
Abort

Benutzeravatar
Hendrik_Ambrosius
Moderator
Moderator
Beiträge: 7731
Registriert: 13. Dez 2004, 23:10
Wohnort: Adendorf/Lüneburg

Re: Ping durchführen, bei erfolgreichem Ping Datei kopieren, nicht erfolgreich count 3 Loops abort, endlosschleife

Beitrag von Hendrik_Ambrosius » 28. Jan 2021, 11:28

Nehmen Sie doch mal die IF COUNTER Bedingungen raus.
Die ist völlig überflüssig da ja automatisch bei Erreichen von 2 über die FOR Schleife beendet wird.
Hendrik Ambrosius / Senior Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 AG | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com

Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 AG or of the support team.

G23
Beiträge: 16
Registriert: 20. Jan 2021, 17:08
Kontaktdaten:

Re: Ping durchführen, bei erfolgreichem Ping Datei kopieren, nicht erfolgreich count 3 Loops abort, endlosschleife

Beitrag von G23 » 28. Jan 2021, 14:09

Vielen Dank,

falls jemand mal das gleiche Problem hat, hier der aktuelle Weg.

Code: Alles auswählen

;Wichtig im Environment muss folgender Wert sein
[Environment]
Erfolg=0 *hinzugefügt
Counter=0 *geändert von 1 auf 0


[Product]
;#FileCheckMachine, MACHINE
;#FileCheckClient, CLIENT
;ReplaceEnv <Variable>

#Set:User, DONTDELETE CLIENT
#Reg:OnUninstallProduct, DELETE
#Reg:Product, DONTDELETE
#Ini:Product, DONTDELETE
#Security:Product
#Set:Uninstall, DELETE

[Set:User]
;If GetDCName() == "" Then "NoDomainController" Else "Set:Product" EndIf
;[Set:Product]
For Counter,1,5,1,Set:Loop
If %Erfolg% == 0 then"NoConnection" endif
[Set:Loop]
set %Erfolg% = 0
;Echo Durchlauf:%Counter%
If GetDCName() == "" Then "NoDomainController" EndIf
;If Counter == "2" Then "NoConnection" EndIf
 
Call cmd /c "ping %empirumserver%  -n 1"
;%empirumserver% localhos localhost
If %Errorlevel% == 0 Then "UpSig" EndIf
;If %Errorlevel% == 1 Then "Set:Product" EndIf
Sleep 120000 
; 120000 = 2 Minuten
[UpSig]

set Counter = 5
;Echo Counter: %Counter%
Set Erfolg = 1
;Echo Erfolgreich: %Erfolg%
callhidden cmd /c "%logonserver%\path\filename.vbs"

[NoDomainController]
ErrorLogMsg "Keine Verbindung zum Server"
Abort

[NoConnection]
Echo "ENDE"
Abort



Antworten

Zurück zu „Paketierung“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste