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

Post Reply
G23
Posts: 79
Joined: 20. Jan 2021, 17:08
Contact:

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

Post by 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: Select all


[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: Select all

[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: Select all

[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
Last edited by G23 on 28. Jan 2021, 14:09, edited 1 time in total.

User avatar
Hendrik_Ambrosius
Moderator
Moderator
Posts: 7962
Joined: 13. Dec 2004, 23:10
Location: Adendorf/Lüneburg

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

Post by 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 Presales Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | 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 or of the support team.

G23
Posts: 79
Joined: 20. Jan 2021, 17:08
Contact:

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

Post by 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: Select all


[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: Select all

[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: Select all


[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

User avatar
Hendrik_Ambrosius
Moderator
Moderator
Posts: 7962
Joined: 13. Dec 2004, 23:10
Location: Adendorf/Lüneburg

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

Post by Hendrik_Ambrosius » 27. Jan 2021, 16:57

Schon mal Set:Loop ohne Anführungszeichen versucht?
Hendrik Ambrosius / Senior Presales Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | 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 or of the support team.

G23
Posts: 79
Joined: 20. Jan 2021, 17:08
Contact:

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

Post by 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: Select all


[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

User avatar
Hendrik_Ambrosius
Moderator
Moderator
Posts: 7962
Joined: 13. Dec 2004, 23:10
Location: Adendorf/Lüneburg

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

Post by 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 Presales Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | 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 or of the support team.

G23
Posts: 79
Joined: 20. Jan 2021, 17:08
Contact:

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

Post by G23 » 28. Jan 2021, 14:09

Vielen Dank,

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

Code: Select all

;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



Post Reply

Return to “Paketierung”

Who is online

Users browsing this forum: Google [Bot] and 5 guests