Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Ping- Batch-Script um PCs aufzuwecken

Frage Entwicklung Batch & Shell

Mitglied: Simon-MCP

Simon-MCP (Level 1) - Jetzt verbinden

04.06.2007, aktualisiert 11.06.2007, 9912 Aufrufe, 9 Kommentare

Grundlegendes über aus- und einlesen einer Textdatei

Hallo,

Ich habe folgendes Problem:
Ich will mehrere PCs in der Nacht per WakeOnLan starten um einen Virenscanner laufen zu lassen. Nach ca. 2h sollen die PCs wieder per shutdown befehl heruntergefahren werden.

Doch nun zum dem aus meiner Sicht schwierigsten Punkt:
Nach den 2h sollen nur die PCs ausgeschaltet werden, die vorher auch schon ausgeschaltet waren. Das heißt Rechner die schon an waren, sollen an bleiben und nicht heruntergefahren werden.

Meine Überlegungen:
[Feststellen welche Rechner an sind]
irgendwie mit dem ping befehl und dann das Ergebnis jeweils in eine Textdatei schreiben und die später wieder auslesen um zu wissen, welche Rechner wieder heruntergefahren werden müssen.
Doch leider habe ich keine Idee wie ich das realisieren kann.

[Rechner starten]
per WakeOnLan mit dem Tool mc-wol.exe

[Rechner herunterfahren]
per shutdown.exe

Habt ihr vielleicht ein paar Ideen für mich, wie ich das am besten umsetzen kann ?
Mitglied: IchoTolot2
04.06.2007 um 19:43 Uhr
Eine Möglichkeit wäre auch über einen Umweg zu arbeiten:

Bei allen Rechnern ein Script in den Autostart legen das den Rechnernamen in eine zentrale Datei schreibt.

Diese Datei vor dem Starten der Rechner mit WOL leeren.

Nach 2 h jede Zeile der Datei an den Shutdown durchreichen.


So mal meine Idee zu dem Thema

LG
Ingo
Bitte warten ..
Mitglied: Simon-MCP
04.06.2007 um 20:43 Uhr
Hallo Icho Tolot,

vielen Dank erstmal für deinen Beitrag.
Dies ist leider keine Lösung für mich. Das ganz soll Zentral (z.B. von einem Server) verwaltet werden können. Ohne jeden Rechner anfassen zu müssen.

Es würde mir auch schon sehr viel weiterhelfen, wenn mir jemand sagen könnte,
wie man eine Textdatei richtig ausliest.

Beispiel Textdatei:

IPs.txt ----
192.168.2.3
192.168.2.4
192.168.2.5
192.168.2.6
...
Ich möchte die Werte nacheinander auslesen und dann nach und nach abarbeiten.

@Mein bisheriger Code:
for /f "Token=*" %%i in (IPs.txt) set var=%%i
ping %var% | find "TTL" >output.txt

Doch leider weise ich so der Variable "var" immer nur den letzten Wert... und nicht alle Werte nach einander zu... was muss ich ändern ?
Bitte warten ..
Mitglied: Biber
04.06.2007 um 21:10 Uhr
Moin crus-online#de,

willkommen im Forum.

Zu den FOR /F-Anweisungen findest Du hier im Forum eine Menge Beispiele.

Im Prinzip kannst Du das als Batch-Newbie stur nach folgendem Schema machen (und pflegen):
01.
<b>FOR /F </b> %%i in (Dein.txt) <b>DO call :ProcessALine</b> %%i 
02.
<b>goto :eof</b> 
03.
~~~~~~~Hier ist die Abarbeitung der Textdatei und auch der Batch zu Ende~~ 
04.
 
05.
<b>:ProcessALine</b> Parameter1( also %1)  ist das erste Token der Zeile 
06.
REM MachWasMit %1 ...    
07.
<b>goto :eof</b>
In Deinem Fall:
01.
@echo off & setlocal 
02.
... 
03.
Echo MalNeFastLeereDateiAnlegen> %temp%\TheseWereAlive.txt 
04.
FOR /F "tokens=1" %%i in (IPs.txt) DO call :PingAlleAb %%i 
05.
FOR /F "tokens=1,2" %%i in (IPs.txt) DO call :WeckAlleAuf %%i %%j 
06.
goto :eof 
07.
~~~~~~~Hier ist die Abarbeitung der Textdatei und auch der Batch zu Ende~~ 
08.
 
09.
:PingAlleAb Parameter1( also %1)  ist das erste Token der Zeile 
10.
REM MachWasMit %1 ...     in Deinem Fall: 
11.
Ping %1 |find "TTL" >nul && echo %1>>%temp%\TheseWereAlive.txt 
12.
goto :eof 
13.
~~~ 
14.
:WeckalleAuf Param1 ist die IP, Param2 die MAC-Adresse  
15.
::.... Alternativ: MAC-Adresse aus IP-Ermitteln (z.B mit GetMac.exe oder mcGetMac.exe 
16.
:: ... oder aus seperater Liste/Textdatei .... 
17.
::....  oder eben aus der IPs.txt (kann ja das zweite Token sein) .... 
18.
 
19.
Find "%1" "%temp%\TheseWereAlive.txt" || mc-wol %2 /i %1  
20.
:: Alle IPs, die noch nicht wach waren, aufwecken 
21.
......(Start Virenscanner....) 
22.
Find "%1" "%temp%\TheseWereAlive.txt" || Shutdown..... 
23.
:: Alle IPs, die nicht wach waren, schlafen legen
So in etwa die ungetestete Skizze.

Ach ja, die IPs.txt würde ich so erweitern:
01.
---- IPs.txt ---- 
02.
192.168.2.3, 00-11-20-3E-C1-C9 
03.
192.168.2.4, 00-12-21-3E-C2-C8 
04.
192.168.2.5, 00-13-22-3E-C3-C7 
05.
192.168.2.6, 00-14-23-3E-C4-C6 
06.
...
Gruss
Biber
[Edit] @geTuemII
Welchen sittlichen Nährwert hat denn dann das Setzen der Variablen %var% für diese flüchtige Sekunde?
Dann reicht doch:
01.
for /f "Token=1" %%i in (IPs.txt) do ping %%i |find "TTL" >> output.txt
...ach, Frauen....
Aber schön, Dich zu lesen...
[/Edit]
Bitte warten ..
Mitglied: geTuemII
04.06.2007 um 21:19 Uhr
Du meinst, in der output.txt steht immer nur der letzte Wert?

01.
for /f "Token=*" %%i in (IPs.txt) do ( 
02.
set var=%%i 
03.
ping %var% |find "TTL" >> output.txt)
Nicht getestet.
[Edit] Ups, Der Meister [tm] war schneller, nimm also das.[/Edit]

geTuemII
Bitte warten ..
Mitglied: Simon-MCP
05.06.2007 um 10:57 Uhr
Hallo Biber,

vielen, vielen Dank erst mal für deine sehr ausführlich Hilfe.

Ein kleines Problem habe ich mit dem Script allerdings noch:
An dem Punkt "Alle PCs aufwecken", weckt er leider nicht alle auf. Er weckt einen von den xx PCs auf und dann springt er sofort in die Virenscanner Routine und danach in die Shutdown Routine. Erst dann wird der nächste PC aus der Liste aufgeweckt.

Kann man dies auch so realisieren, dass er erst ALLE PCs einschaltet und dann weiter geht ?

Aktuell sieht der Code folgendermaßen aus:
01.
@echo off & setlocal 
02.
Echo MalNeFastLeereDateiAnlegen> %temp%\TheseWereAlive.txt 
03.
FOR /F "tokens=1" %%i in (C:\aufwecken\IPs.txt) DO call :PingAlleAb %%i 
04.
FOR /F "tokens=1,2" %%i in (C:\aufwecken\IPs.txt) DO call :WeckAlleAuf %%i %%j 
05.
goto :eof 
06.
 
07.
:PingAlleAb Parameter1( also %1)  ist das erste Token der Zeile 
08.
REM MachWasMit %1 ...     in Deinem Fall: 
09.
Ping %1 |find "TTL" >nul && echo %1>>%temp%\TheseWereAlive.txt 
10.
goto :eof 
11.
 
12.
:WeckalleAuf Param1 ist die IP, Param2 die MAC-Adresse  
13.
Find "%1" "%temp%\TheseWereAlive.txt" || C:\aufwecken\mc-wol.exe %2 /i %1  
14.
:: Alle IPs, die noch nicht wach waren, aufwecken 
15.
 
16.
Echo (Start Virenscanner....) 
17.
C:\aufwecken\Sleep 7200 
18.
 
19.
Find "%1" "%temp%\TheseWereAlive.txt" || C:\Windows\System32\shutdown.exe -s -f -m \\%1 
20.
:: Alle IPs, die nicht wach waren, schlafen legen
An der Stelle:
Echo (Start Virenscanner...)
C:\aufwecken\SLEEP.exe 7200


Halte ich das Script für 2h an, dass der Virenscanner genug Zeit hat, einen Fullscan durchzuführen.
Dadurch wird der Start des nächsten PCs natürlich um 2h verzögert. Dies ist leider etwas schlecht, da es sich um mehrere Rechner handelt und eine Nacht dann nicht ausreichen würde.

Kann man durch einen Befehl erreichen, dass er erst zur nächsten Routine geht, nachdem alle Rechner (die nicht eingeschaltet waren) aufgeweckt wurden?
Bitte warten ..
Mitglied: geTuemII
05.06.2007 um 12:52 Uhr
Wo sehe ich denn eigentlich den Startaufruf des Virenscanners? Kannst du das über CALL auf ein anderes Batch machen? IMHO wartet das aufrufende Batch nämlich in neueren BS nicht mehr, bis das Sub abgearbeitet worden ist.

@Biber: %var% kann nur wegen Nutzlosigkeit nicht einfach so in diesem Script gekündigt werden, sonst gibt es Ärger mit dem Gleichstellungsbeauftragten. Ist schließlich ein Mädchen.

geTuemII
Bitte warten ..
Mitglied: Simon-MCP
05.06.2007 um 13:19 Uhr
Hallo geTuemII,

den Aufruf vom Virenscanner werde ich über eine Management Console von Symantec steuern.
Die Rechner müssen dazu nur eingeschaltet sein. --> Rest wird über die Konsole erledigt. (ausser das Herunterfahren :D)

Das Script von Biber funktioniert echt einwandfrei. Habe gerade nur einen Rechner in der Textdatei angegeben und dieser wird sauber gestartet wartet meine Pause ab und wenn er eingeschaltet war wird er angelassen und wenn er aus war wird er heruntergefahren.

Einzigstes Problem:
Sobald ich 2 Rechner in die Textdatei eintrage, dann arbeitet er die PCs nacheinander ab anstatt Sie alle erst hoch zu fahren und dann am Schluss wieder alle runter zu fahren.


Vielen Dank für Eure bisherigen Bemühungen.
Bitte warten ..
Mitglied: Biber
05.06.2007 um 20:19 Uhr
Moin crus-online,

Kann man durch einen Befehl erreichen, dass er erst zur nächsten Routine geht, nachdem alle Rechner (die nicht eingeschaltet waren) aufgeweckt wurden?

Bau dafür einfach drei FOR /F Anweisungen und drei geCALLte Blöcke nacheinander auf.

Runde 1) FOR/F ...[Wie oben].....DO Call:PingAlleAb %%i
Runde 2) FOR/F ...[Wie oben].....DO Call:WeckAlleAuf %%i %%j
Runde 3) FOR/F ...[Wie oben].....DO Call:StartAVTool %%i

wobei sich :WeckalleAuf verkürzt auf:
Find "%1" "%temp%\TheseWereAlive.txt" || C:\aufwecken\mc-wol.exe %2 /i %1
goto :eof

Und was Du bei :StartAVTool machst, hängt davon ab, ob Du alle Clients scannen willst mit der Rechnerleistung Deines Servers oder ob die jeweils "selbst" eine Anwendung starten sollen.
Der erste Fall (Server scannt alle Clients) wäre dann:
01.
:StartAVTool 
02.
START AvTool.exe [AVTool-Parameterliste] [Ip-Adresse==%1+Lw-Angabe] 
03.
goto :eof
Nach diesen drei FOR-Anweisungen kannst Du dann eine Zeile mit "sleep 7200" einfügen.
Als Letztes dann...
Runde 4) FOR /F ...[Wie oben]... Do CALL :LegAlleSchlafen %%i
01.
:LegAlleSchlafen 
02.
Find "%1" "%temp%\TheseWereAlive.txt" || C:\Windows\System32\shutdown.exe -s -f -m \\%1 
03.
:: Alle IPs, die nicht wach waren, schlafen legen 
04.
goto :eof
Thats all.
01.
 Einzigstes Problem:
Du meintest sicher: "Einziges Problem:"?

HTH Biber
P.S. @geTuemII
...mit dem/der Gleichstellungsbeauftragten...
Liebe Grüße an alle Variablen und Platzhalterinnen
Bitte warten ..
Mitglied: Simon-MCP
11.06.2007 um 08:34 Uhr
Hallo Biber,

vielen, vielen Dank für deine Super Hilfe.
Das Script läuft soweit echt Super. Ich habe noch ein paar kleinere Probleme, aber ich denke das ich diese auch noch in den Griff bekommen werde.

*5 Sterne für dich ;-D*

@Mein komplettes Script lautet nun:
01.
@echo off & setlocal 
02.
::Temporäre Datei anlegen 
03.
Echo TempDatei> %temp%\TheseWereAlive.txt 
04.
 
05.
FOR /F "tokens=1" %%i in (C:\aufwecken\IPs.txt) DO call :PingAlleAb %%i 
06.
FOR /F "tokens=1,2" %%i in (C:\aufwecken\IPs.txt) DO call :WeckAlleAuf %%i %%j 
07.
 
08.
Echo (Start des Virenscanner) 
09.
::Pause von 2h damit der Virenscanner durchlaufen kann 
10.
C:\aufwecken\SLEEP.EXE 120 
11.
 
12.
FOR /F "tokens=1,2" %%i in (C:\aufwecken\IPs.txt) DO call :LegAlleSchlafen %%i 
13.
goto :eof 
14.
 
15.
:PingAlleAb 
16.
Echo (Ueberpruefen, welche Rechner schon eingeschaltet sind) 
17.
Ping %1 |find "TTL" >nul && echo %1>>%temp%\TheseWereAlive.txt 
18.
goto :eof 
19.
 
20.
:WeckalleAuf (Param1 ist die IP, Param2 die MAC-Adresse) 
21.
Echo (Rechner die nicht eingeschaltet waren, jetzt einschalten) 
22.
Find "%1" "%temp%\TheseWereAlive.txt" || C:\aufwecken\mc-wol.exe %2 /i %1  
23.
:: Alle IPs, die noch nicht wach waren, aufwecken 
24.
goto :eof 
25.
 
26.
:LegAlleSchlafen 
27.
Echo (Rechner die nicht eingeschaltet waren, wieder herunterfahren) 
28.
Find "%1" "%temp%\TheseWereAlive.txt" || C:\Windows\System32\shutdown.exe -s -f -m \\%1 
29.
:: Alle IPs, die nicht wach waren, schlafen legen 
30.
goto :eof
cu
Crus
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Ping script batch
gelöst Frage von ThePommesBudeBatch & Shell4 Kommentare

Hallo, ich habe hier ein kleines script geschrieben, dass die IP adressen Pingen soll und zurück geben soll, ob ...

Entwicklung
Ping per Lua Script
gelöst Frage von 121851Entwicklung1 Kommentar

Hallo zusammen, kann mir jemand sagen wie ich einen PC per Lua Script anpingen kann? Kann jemand die Sprache? ...

Batch & Shell
Batch Ping Anfrage
Frage von kirox317Batch & Shell

Moin, ich habe eine Routine (Batch) geschrieben, die eine sehr lange Liste an IP-Adressen abarbeitet. Diese werden dann nach ...

Batch & Shell
Batch Programm (Ping funktion)
gelöst Frage von MedicalAdBatch & Shell1 Kommentar

Servus Leute, ich versuche ein Batch Pprogramm zu schreiben das die Eingabe des Users Pingt. Ich habe es auch ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 10 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 14 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...