Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Batch- Server nach Kontrolle (Ip und spez. Progr.) runterfahren

Frage Entwicklung Batch & Shell

Mitglied: kuhnikuehnast

kuhnikuehnast (Level 1) - Jetzt verbinden

16.01.2010, aktualisiert 16:30 Uhr, 2619 Aufrufe

Ich habe eine Batch für einen Server geschrieben.
Es soll alle 10 min kontrolliert werden, ob Pcs der Domäne noch erreichbar sind. Ist dies nciht mehr der Fall, wird mit einer config.txt abgeglichen, ob noch ein oder mehrere zuvor definierte Programme laufen. Ist dies auch nicht mehr der Fall, fährt der Server das System herunter.

Hi!
Ich poste mal hier den Quellcode... Evtl. ist manches etwas umständlich und hätte auch einfacher gelöst werden können... Vielleicht werden aber auch noch Fehler gefunden, die mir bisher entgangen sind. Deshalb stell ich den Quellcode mal online. Würde mich über Kritik freuen (aber bitte nicht bez.: Das hätte auch so einfacher gehen können... Nur, wenn wirklcih Fehler drin sind! ;) )

lg Kuhni


edit: Code wurde nochmals überarbeitet...


01.
@echo off 
02.
 
03.
 
04.
set ipmax=12 
05.
set ipmin=9 
06.
set countdown=2 
07.
set Wartezeit=600 
08.
set Programmliste=config.txt 
09.
 
10.
set xcountdown=%countdown% 
11.
 
12.
 
13.
REM ###################Umlaute definieren################### 
14.
chcp 1252>nul 
15.
set ue=ü 
16.
set ae=ä 
17.
set oe=ö 
18.
set Uue=Ü 
19.
set Aae=Ä 
20.
set Ooe=Ö 
21.
set ss=ß 
22.
chcp 850>nul 
23.
REM ########################################################## 
24.
 
25.
 
26.
 
27.
 
28.
 
29.
 
30.
REM ###################Wartezeit berechnen################### 
31.
 
32.
set /a min=%wartezeit%/60 
33.
set /a y=%min%*60 
34.
set /a sek=%wartezeit%-%y% 
35.
set waittime=Wartezeit: %min% Minute(n), %sek% Sekunde(n) 
36.
REM ########################################################## 
37.
 
38.
if not exist "%CD%/log/" mkdir "%CD%/log/" 
39.
 
40.
	call :ausgabe Serverstart 
41.
        call :ausgabe %waittime% 
42.
	echo. & echo. >>"%CD%/log/[%date%]- Logfile Server.txt" 
43.
 
44.
ping localhost -n %Wartezeit% > nul 
45.
 
46.
	 
47.
REM ###################Mainloop################### 
48.
:mainloop 
49.
	set ip=%ipmin% 
50.
	if %xcountdown%==0 goto programm 
51.
 
52.
	call :ausgabe Ping Start- Ip-Bereich: 192.168.0.%ip% - 192.168.0.%ipmax%  
53.
 
54.
 
55.
 
56.
REM ###################Ping ausfhren################### 
57.
 
58.
:pingloop 
59.
	if %ip% EQU %ipmax% goto endeschlecht 
60.
	set /a ip=%ip%+1 
61.
	ping 192.168.0.%ip% -n 1 -w 10 %1|find "TTL=" > nul 
62.
	if %errorlevel%==1 goto not-available 
63.
	goto :endegut 
64.
 
65.
 
66.
 
67.
:not-available 
68.
	goto pingloop 
69.
 
70.
 
71.
 
72.
 
73.
:endegut 
74.
	 
75.
 
76.
		set xcountdown=%countdown% 
77.
 
78.
	call :ausgabe Ping Ergebnis Positiv- Erste Ip: 192.168.0.%ip%  
79.
	call :ausgabe %waittime% 
80.
 
81.
		echo. & echo. >>"%CD%/log/[%date%]- Logfile Server.txt" 
82.
 
83.
		ping localhost -n %Wartezeit% > nul 
84.
 
85.
 
86.
	goto mainloop 
87.
 
88.
 
89.
 
90.
:endeschlecht 
91.
	 
92.
 
93.
		set /a xcountdown=%xcountdown%-1 
94.
 
95.
	call :ausgabe Ping  Negativ- Noch %xcountdown% Ping(s) bis zum herunterfahren 
96.
 	call :ausgabe %waittime% 
97.
	 
98.
		echo. & echo. >>"%CD%/log/[%date%]- Logfile Server.txt" 
99.
 
100.
		ping localhost -n %Wartezeit% > nul 
101.
 
102.
 
103.
	goto mainloop	 
104.
REM ########################################################## 
105.
 
106.
REM ########################################################## 
107.
 
108.
 
109.
 
110.
 
111.
 
112.
 
113.
REM ###################Runterfahren################### 
114.
 
115.
:runterfahren 
116.
	echo. & echo. >>"%CD%/log/[%date%]- Logfile Server.txt" 
117.
 
118.
		call :ausgabe Initiale Shutdownkontrolle gestartet: 
119.
 
120.
			:pingloop2 
121.
			if %ip% EQU %ipmax% goto endeschlecht2 
122.
			set /a ip=%ip%+1 
123.
					ping 192.168.0.%ip% -n 1 -w 10 %1|find "TTL=" > nul 
124.
			if %errorlevel%==1 goto not-available2 
125.
			goto :endegut 
126.
 
127.
			:not-available2 
128.
			goto pingloop2 
129.
 
130.
 
131.
 
132.
			:endeschlecht2 
133.
			call :ausgabe Kein Pc erreichbar: 192.168.0.%ip% - 192.168.0.%ipmax% 
134.
			 
135.
				set prog=0 
136.
 
137.
					for /f %%a in (%Programmliste%) do Tasklist |find /i "%%a" && set /a prog+=1 1>NUL 2>NUL  
138.
 
139.
				if %prog%==0 ( 
140.
					goto :programm-aus2  
141.
				) else ( 
142.
					goto :programm-an 
143.
144.
 
145.
			:programm-aus2 
146.
                        call :ausgabe Es l%ae%uft kein wichtiges Programm mehr. 
147.
			call :ausgabe Shutdown initiiert. 
148.
			echo. & echo. >>"%CD%/log/[%date%]- Logfile Server.txt" 
149.
 
150.
	shutdown.exe /f /s 
151.
exit 
152.
REM ########################################################## 
153.
 
154.
 
155.
 
156.
 
157.
 
158.
REM ###################Schleife läuft noch ein Programm?################### 
159.
 
160.
:programm 
161.
	 
162.
	 
163.
	set prog=0 
164.
 
165.
		for /f %%a in (%Programmliste%) do Tasklist |find /i "%%a" && set /a prog+=1 1>NUL 2>NUL  
166.
 
167.
	 
168.
	if %prog%==0 ( 
169.
		goto :programm-aus  
170.
	)else ( 
171.
		goto :programm-an 
172.
173.
 
174.
:programm-an 
175.
        call :ausgabe Programmtest: 
176.
        call :ausgabe Es l%ae%uft/laufen noch %prog% Programm(e). 
177.
	call :ausgabe %waittime% 
178.
 
179.
		echo. & echo. >>"%CD%/log/[%date%]- Logfile Server.txt" 
180.
 
181.
		ping localhost -n %Wartezeit% > nul 
182.
	goto :programm 
183.
 
184.
:programm-aus 
185.
        call :ausgabe Programmtest (1. Versuch): 
186.
        call :ausgabe Es l%ae%uft kein wichtiges Programm mehr.  
187.
	call :ausgabe %waittime% 
188.
 
189.
		echo. & echo. >>"%CD%/log/[%date%]- Logfile Server.txt" 
190.
 
191.
		ping localhost -n %Wartezeit% > Nul 
192.
 
193.
	set prog=0 
194.
 
195.
		for /f %%a in (%Programmliste%) do Tasklist |find /i "%%a" && set /a prog+=1 1>NUL 2>NUL 
196.
 
197.
 
198.
	 
199.
	if %prog%==0 ( 
200.
		goto :test 
201.
	) else ( 
202.
		goto :programm-an 
203.
204.
 
205.
:test 
206.
	call :ausgabe Programmtest (2. Versuch): 
207.
        call :ausgabe Es l%ae%uft kein wichtiges Programm mehr.  
208.
	call :ausgabe %waittime%  
209.
	ping localhost -n %Wartezeit% > nul 
210.
	goto :runterfahren	 
211.
REM ########################################################## 
212.
 
213.
 
214.
 
215.
 
216.
 
217.
 
218.
 
219.
 
220.
 
221.
REM ###################Schleife für Ausgabe und Log################### 
222.
 
223.
:ausgabe 
224.
 
225.
	set Zeit=%Time% 
226.
chcp 1252>nul 
227.
	echo [%date% - %Zeit%] %* >> "%CD%/log/[%date%]- Logfile Server.txt" 
228.
chcp 850>nul 
229.
	echo [%date% - %Zeit%] %* 
230.
 
231.
goto :eof 
232.
REM ##########################################################
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...