Windoof Cripting: Unterschied zwischen den Versionen
Zovi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= Mails via CMD Powershell = powershell.exe -command send-mailmessage -to to@domain.com -from from@domain.com -subject '"My Testmail"' -smtpserver 10.10.10.10…“) |
Zovi (Diskussion | Beiträge) (→löschen von älteren Daten - saveXdays) |
||
Zeile 29: | Zeile 29: | ||
= löschen von älteren Daten - saveXdays = | = löschen von älteren Daten - saveXdays = | ||
− | ...geht am ringsten mit [http:// | + | ...geht am ringsten mit [http://www.horstmuc.de/win/delage.htm DelAge - delage32.exe / delage64.exe] |
Hier das Script: | Hier das Script: |
Version vom 20. September 2017, 14:18 Uhr
Inhaltsverzeichnis
Mails via CMD Powershell
powershell.exe -command send-mailmessage -to to@domain.com -from from@domain.com -subject '"My Testmail"' -smtpserver 10.10.10.10 -body '"This is a test with spaces."'
powershell.exe -command send-mailmessage -to martin.kaufmann.2 ät post.ch, kurt.neuenschwander ät post.ch, annik.reber ät post.ch, damian.oparic ät post.ch, yves.reinhard ät post.ch, peter.richter ät post.ch, bruno.bruegger ät post.ch, stefan.vollrath ät post.ch, benjamin.sen ät post.ch -from martin.kaufmann.2 ät post.ch -subject '"Gipfeli"' -smtpserver smtp.pnet.ch -body '"Ich fuehle mich heute ganz toll und moechte ein Gipfeli spendieren. Hab euch alle toll lieb. Gruess Dinu"'
Echo-Zeile ohne Zeilenumbruch
Mehrmals in die gleiche Zeile schreiben:
echo | set /p=
z.B.:
echo | set /p= Hello echo World
ergibt:
Hello World
Putty Tools
Putty
Plink
- ssh:
plink.exe [Username]@[Hostname] -pw [Password] -batch [Befehle]
- to serial Port:
plink -serial -sercfg 9600,8,n,1,X /dev/ttyUSB0
löschen von älteren Daten - saveXdays
...geht am ringsten mit DelAge - delage32.exe / delage64.exe
Hier das Script:
:: by neku1 @ 17.05.2010 :: << :: (",) ::<( )> ::,,J L,, :: @echo off PROMPT $H color 0a cls echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= echo Welcome to saveXdays v1.0 echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= cd \Scripts\saveXdays\ setlocal rem Hier die Anzahl Tage der aufzubehahrenden Daten angeben. rem z.B. 5 Tage stehen lassen Rest verschieben. (SET /A TAGE=5) SET /A TAGE=5 rem Dateien im LW G: werden kopiert echo ... G:\ Dateien werden kopiert xcopy /V /i /c /h /y G:\data\pool "\\serverX\backup\data\pool" echo . echo Dateien werden geloescht delage32 G:\data\pool\*.* %TAGE% echo . echo G:\ FERTIG! echo . echo . echo . goto :EOF
BEEP
einen Systempautsprecher Piepston aus einem BAT file zu kriegen
@echo � >CON und schon piepst der kleine
oder aus der CMD Shell
Eingabeaufforderung öffnen Strg+G drücken und ENTERvoila =)
Usereingabe
Usereingabe die in eine Variable gesetzt wird.
Beispiel: Die eingegebenen Zeichen befinden sich anschliessend in der Variablen %EINGABE%
set /p EINGABE=Bitte etwas eingeben:
Müsterchen gefällig (copy paste in ein leeres .bat File und ausführen)?
echo off
cls
set /p EINGABE=Bitte etwas eingeben:
cls
echo:Sie haben volgendes eingegeben: %EINGABE%
pause
Text / Strings bearbeiten
Pracktische Scripts für Textbearbeitung
String mit Batch mehrfach anhand von Teilern zerlegen
@echo off & setLocal
For /f "delims=/ tokens=1,2,6" %%i in ("D:\Eine\Textdatei.txt") do (
Set "myvar1=%%i"
Set "myvar2=%%j"
Set "myvar3=%%k" )
Echo myvar1 hat Wert [%myvar1%]
Echo myvar2 hat Wert [%myvar2%]
Echo myvar3 hat Wert [%myvar3%]
NDMP-Save
Allgemeines
Script Ordner:
C:\scripts\ndmp auf dem Orion01
Auf dem Orion01 sind 8 Scheduled Tasks eingerichtet, die abwechslungsweise( 8er Turnus) wöchentlich eine NDMP Sicherung startet.
Die Scheduled Tasks übergeben jeweils ein Argument ( Wert: Zahl 1 bis 8 ) um dem Programm mitzuteilen welche Art vom Sicherung es machen muss.
Arten von Sicherungen: Erster Monat
Woche 1: full - Serie 1 Woche 2: inc - Serie 2 Woche 3: inc - Serie 3 Woche 4: inc - Serie 4
Zweiter Monat
Woche 5: full - Serie 5 Woche 6: inc - Serie 6 Woche 7: inc - Serie 7 Woche 8: inc - Serie 8
Also nach zwei Monaten wird wieder die "Serie 1" ausgeführt und das alte Backup wird überschrieben.
Programm Aufbau
Per Task wird das ndmp.bat oder ndmp_b.bat mit Argumenten gestartet. Dies Macht eine erste Fehlerprüfung auf fehlstarten und schreibt das Resultat mit Zeitangaben in das log.txt file.
Wenn alles i.O. ist, werden nacheinander die ndmp1.bat und ndmp2.bat oder sie ndmp3.bat und ndmp4.bat gestartet (Je nach Task).
Die NDMP Scripte 1 - 4 lesen aus den "NDMP Volumen Listen" die aktuell zu sichernden Volumes der jeweiligen NetApp.
Nun wird die DataDomain mit einem durch das Script zusammengetragenen Befehl angetriggert einen Backup der NetApp- Volumes via NDMP zu ziehen.
Argumente
Die Argumente werden an die Batchfiles beim Aufruf weitergegeben.
Argument 1:
Zahl von 1-8
Ergibt welche Woche/Serie
Argument 2:
Zahl 0 oder 1
1 macht ein full Backup. 0 ein incrementelles.
z.B.:
...\ndmp3.bat 5 1
ergibt ein Backup der Woche/Serie 5 und ist ein full Backup.
Sicherheit
Im Programm ist eine "Sicherung " eingebaut, die ein versehentliches Ausführen des Scriptes verhindert( siehe im Code nach :: Subprozeduur (Chinderschutz) ).
Logging
Im Scriptverzeichnis liegt das log.txt. Es wird kontinuierlich weitergeführt. Bei nicht vorhanden der Datei wird eine neue log.txt Datei erstellt.
Code
Angabe der Volumes
Die Angaben der zu sichernden Volumes nimmt das Script aus dem ndmp_listnorma0*.txt File. Dort drinn sind die Volumes auf den normas gelistet, die auf die DataDomain gesichert werden müssen. Entscheid durch Storage und BackUp Admins.
In den "NDMP Volume Listen" werden die Pfade zu den Volumen und die Zielpfade auf der DataDomain in einer Zeile angegeben.
z.B.:
norma01:/vol/nfs_swrepo_bgdb/.snapshot/nightly.0/ /backup/ndmp/norma01/nfs_swrepo_bgdb-nightly.0
von:
norma01:/vol/nfs_swrepo_bgdb/.snapshot/nightly.0/
nach:
/backup/ndmp/norma01/nfs_swrepo_bgdb-nightly.0
Listen gibt es für jede NetApp:
- ndmp_list_norma01.txt
- ndmp_list_norma02.txt
- ndmp_list_norma03.txt
- ndmp_list_norma04.txt
Installationsanleitung
- Inhalt von "SWrepo\..\Ypsomed\Scripts\NDMP-Save\Version 1\405108" auf dem Backupserver ins Verzeichnis "C:\scripts\ndmp" kopieren
- Scheduled Tasks mit User "CORP\svcbackup" erstellen:
Scheduled Tasks Name Pfad Datum
Serie 1.1 - ndmp full week 1 C:\scripts\ndmp\ndmp.bat 1 Monthly - 21:00 - the first Monday - Months:01,03,05,07,09,11 Serie 1.2 - ndmp inc week 2 C:\scripts\ndmp\ndmp.bat 2 Monthly - 21:00 - the second Monday - Months:01,03,05,07,09,11 Serie 1.3 - ndmp inc week 3 C:\scripts\ndmp\ndmp.bat 3 Monthly - 21:00 - the third Monday - Months:01,03,05,07,09,11 Serie 1.4 - ndmp inc week 4 C:\scripts\ndmp\ndmp.bat 4 Monthly - 21:00 - the fourth Monday - Months:01,03,05,07,09,11 Serie 2.5 - ndmp inc week 5 C:\scripts\ndmp\ndmp.bat 5 Monthly - 21:00 - the first Monday - Months:02,04,06,08,10,12 Serie 2.6 - ndmp inc week 6 C:\scripts\ndmp\ndmp.bat 6 Monthly - 21:00 - the second Monday - Months:02,04,06,08,10,12 Serie 2.7 - ndmp inc week 7 C:\scripts\ndmp\ndmp.bat 7 Monthly - 21:00 - the third Monday - Months:02,04,06,08,10,12 Serie 2.8 - ndmp inc week 8 C:\scripts\ndmp\ndmp.bat 8 Monthly - 21:00 - the fourth Monday - Months:02,04,06,08,10,12
Scheduled Tasks - serie B Name Pfad Datum
SerieB 1.1 - ndmp full week 1 C:\scripts\ndmp\ndmp_b.bat 1 Monthly - 21:00 - the first Tuesday - Months:01,03,05,07,09,11 SerieB 1.2 - ndmp full week 2 C:\scripts\ndmp\ndmp_b.bat 2 Monthly - 21:00 - the second Tuesday - Months:01,03,05,07,09,11 SerieB 1.3 - ndmp full week 3 C:\scripts\ndmp\ndmp_b.bat 3 Monthly - 21:00 - the third Tuesday - Months:01,03,05,07,09,11 SerieB 1.4 - ndmp full week 4 C:\scripts\ndmp\ndmp_b.bat 4 Monthly - 21:00 - the fourth Monday - Months:01,03,05,07,09,11 SerieB 2.5 - ndmp inc week 5 C:\scripts\ndmp\ndmp_b.bat 5 Monthly - 21:00 - the first Monday - Months:02,04,06,08,10,12 SerieB 2.6 - ndmp inc week 6 C:\scripts\ndmp\ndmp_b.bat 6 Monthly - 21:00 - the second Monday - Months:02,04,06,08,10,12 SerieB 2.7 - ndmp inc week 7 C:\scripts\ndmp\ndmp_b.bat 7 Monthly - 21:00 - the third Monday - Months:02,04,06,08,10,12 SerieB 2.8 - ndmp inc week 8 C:\scripts\ndmp\ndmp_b.bat 8 Monthly - 21:00 - the fourth Monday - Months:02,04,06,08,10,12
In den Dateien ndmp1.bat bis ndmp4.bat auf zeile 109 den User, Passwort und Pfad auf die DataDomain anpassen.
z.B.:
plink.exe neku1opr@dd660-01 -pw ***** -batch ndmp get%inc% %*.serie%argument1% >>logs\log1.txt
In den Dateien ndmp1.bat bis ndmp4.bat auf zeile 220 die Maileinstellungen anpassen.
z.B.:
blat mail4.txt -to backup@ypsomed.com -f backup@ypsomed.com -s "NDMP-Save 1 - Report ndmp4.bat" -server
smtp.corp.itsroot.biz -debug -log logs\blat.log -timestamp -x "generated by SNMP-Save - NEKU1"
Voila, fertig.
USV Shutdown
usv_shutdown.bat
:: by neku1 @ 27.05.2009 :: ///// :: ( o o ) :: oooO-(_)-Oooo :: :: Die Argumenten übergabe (1) wurde aus sicherheitsgründen eingebaut. :: So wird verhindert, dass ein versehentliches :: ausführen des Sriptes eine Katastrophe auslöst =) :: D.h. das script funktioniert nur mit dem übergeben des Argumentes %1 echo off PROMPT $H color 0a cls echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= echo Welcome to Net-Shutdown v1.0 echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= echo: Version Net-Shutdown v1.0.04.12 echo: echo: echo: "Start Zeit:" %date%, %time%, - %username% echo. >>log.txt echo %date% %time% - Login User: %username%. ==== START des Net-Shutdown %2>>log.txt echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= echo. echo. echo. :: !! USerigab !!! :: Wartäzytä zwüschä dä einzälnä Shutdowns igä (in min): set /A zyt1=10 set /A zyt2=30 set /A zyt3=30 :: Liste set /A list1=1 set /A list2=2 set /A list3=3 :: Pfad iisteuä cd C:\shutdown\ rem echo argument1: %1 rem echo argument2: %2 :: (Sicherheits Check) fürs teschtä vo dä Argumänt. Chunnt kes (1), abbrächä dä Seich! IF NOT [%1]==[1] ( call :chinderschutz %1 goto:eof ) :: ersteuä vor error.txt - wenn nid vorhandä wird speter diä aktion abbrochä echo >>error.txt ::---------------------------------1------------------------------------ :: Wartä uf erschti Stafflä (zb: 10.min) - Zeit in Sek. 1h = 3600s echo Ab hie geits no 10 min bis zum shutdown vor Lischte %list1%! echo. echo Au 1 min. es Puenktli: echo. SET /A counter="0" :loop1 IF NOT %zyt1%==%counter% ( set /A counter+=1 rem echo Counter +1 isch jtz %counter% , zyt1:%zyt1% rem echo %ERRORLEVEL% rem CALL :rolling echo.|set /p =. SLEEP 60 GOTO :loop1 ) ELSE ( rem echo %ERRORLEVEL% rem echo ELSE !!!!!!!!!!!! erreicht: Counter isch jtz %counter%, zyt1:%zyt1% SLEEP 1 echo . ) echo. echo Lischte %list1% shutdown echo. :: Abbruch bedingig error.txt IF EXIST error.txt ( echo error.txt isch vorhande) ELSE ( CALL :abbruch goto :eof ) :: Shutdown - Stafflä 1 :: Liste Kontrolle echo %date% %time% - Login User: %username%. ==== :: Staffle 1 abäfahrä ::>>log.txt IF NOT EXIST shutdown_liste_%2_%list1%.txt ( CALL :abbruch2 1 %2 goto:eof ) set /A Zeile="0" for /f "tokens=*" %%l in ( shutdown_liste_%2_%list1%.txt ) do ( call :shutdown %%l ) echo %ERRORLEVEL% blat -to 56327@alarm.express.sikado.net,serverservices@ypsomed.com -f usv_shutdown@ypsomed.com -server smtp.corp.itsroot.biz -subject "USV-Shutdown-Alarm" -body "Die Server-Staffel 1 von %2 wurde wegen Stromausfall heruntergefaren!!!" -debug -log maillog\blat-mail.log -timestamp -x "generated by USV-ShutDown - NEKU1" echo Alarm-Mail wurde versendet>>log.txt echo. echo Ende Lischte %list1% shutdown echo. echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= echo. ::---------------------------------2------------------------------------- :: Wartä uf zwöiti Stafflä (30.min) echo Ab hie geits no 30 min bis zum shutdown vor Lischte %list2%! echo. echo Au 1 min. es Puenktli: echo. SET /A counter="0" :loop2 IF NOT %zyt2%==%counter% ( set /A counter+=1 rem echo Counter +1 isch jtz %counter% , zyt1:%zyt2% rem echo %ERRORLEVEL% rem CALL :rolling echo.|set /p =. SLEEP 60 GOTO :loop2 ) ELSE ( rem echo %ERRORLEVEL% rem echo ELSE !!!!!!!!!!!! erreicht: Counter isch jtz %counter%, zyt1:%zyt2% SLEEP 1 echo . ) echo. echo Lischte %list2% shutdown echo. :: Abbruch bedingig error.txt IF EXIST error.txt ( echo error.txt isch vorhande) ELSE ( CALL :abbruch goto :eof ) :: Shutdown - Stafflä 2 echo %date% %time% - Login User: %username%. ==== :: Staffle 2 abäfahrä ::>>log.txt :: Liste Kontrolle IF NOT EXIST shutdown_liste_%2_%list2%.txt ( CALL :abbruch2 2 %2 goto:eof ) set /A Zeile="0" for /f "tokens=*" %%l in ( shutdown_liste_%2_%list2%.txt ) do ( call :shutdown %%l ) echo. echo Ende Lischte %list2% shutdown echo. echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= echo. ::--------------------------------3------------------------------------- :: Wartä uf driti Stafflä (nomau 30.min = 1h nach Start) echo Ab hie geits no 10 min bis zum shutdown vor Lischte 3! echo. echo Au 1 min. es Puenktli: echo. SET /A counter="0" :loop3 IF NOT %zyt3%==%counter% ( set /A counter+=1 rem echo Counter +1 isch jtz %counter% , zyt1:%zyt3% rem echo %ERRORLEVEL% rem CALL :rolling echo.|set /p =. SLEEP 60 GOTO :loop3 ) ELSE ( rem echo %ERRORLEVEL% rem echo ELSE !!!!!!!!!!!! erreicht: Counter isch jtz %counter%, zyt1:%zyt3% SLEEP 1 echo . ) echo. echo Lischte %list3% shutdown echo. :: Abbruch bedingig error.txt IF EXIST error.txt ( echo error.txt isch vorhande) ELSE ( CALL :abbruch goto :eof ) :: Shutdown - Stafflä 3 echo %date% %time% - Login User: %username%. ==== :: Staffle 3 abäfahrä ::>>log.txt :: Liste Kontrolle IF NOT EXIST shutdown_liste_%2_%list3%.txt ( CALL :abbruch2 3 %2 goto:eof ) set /A Zeile="0" for /f "tokens=*" %%l in ( shutdown_liste_%2_%list3%.txt ) do ( call :shutdown %%l ) echo. echo Ende Lischte %list3% shutdown echo. echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= echo. ::------------------------------------Schluss Prozedere--------------------------------- echo %date% %time% - Login User: %username%. ==== ENDE aui Staffle vo %2 si abägfahrä worde.>>log.txt echo. echo aui Staffle si abegfahre worde. echo. DEL /F /Q C:\shutdown\error.txt echo. error.txt isch gloesche worde echo. echo. ENDE GOTO :eof ::----------------------------------------The End------------------------------------- ::------------------------------------Subprozeduuren--------------------------------- :: Subprozeduur (Abbrechen) error.txt :abbruch echo %date% %time% - Login User: %username%. ==== error.txt File isch nid ume! Abbruch!!! ENDE>>log.txt echo. >>log.txt echo error.txt File isch nid ume! Abbruch! echo ENDE GOTO :eof :: Subprozeduur (Abbrechen) shutdown_liste_%2_%list1%.txt :abbruch2 echo %date% %time% - Login User: %username%. ==== shutdown_liste_%2_%1.txt File isch nid ume! Abbruch2!!! ENDE>>log.txt echo. >>log.txt echo shutdown_liste_%2_%list1%.txt File isch nid ume! Abbruch2! echo ENDE GOTO :eof :: Subprozeduur (Shutdown) :shutdown set /A Zeile+=1 echo %Zeile%: %* wird jtz abegfahre IF NOT %*==nul ( shutdown -m \\%* -f -t 0 -c "WhatsUp USV-Shutdown cause Trap upsOnBattery" ) ELSE ( echo %date% %time% - Login User: %username%. ==== !!! Script isch ohni Servernamä derhär cho!!!(%*) ) echo ERRORLEVEL: %ERRORLEVEL% IF NOT %ERRORLEVEL%==0 ( echo %date% %time% - Login User: %username%. ==== !!! Server %* isch NID abägfahrä wordä oder nid vorhandä gsi. ERRORLEVEL: %ERRORLEVEL%>>log.txt ) ELSE ( echo %date% %time% - Login User: %username%. ==== Server %* isch abägfahrä wordä.>>log.txt ) GOTO :eof :: Subprozeduur (Chinderschutz) :chinderschutz echo Weisch was't machsch??? echo Isch de nes gfaerlechs Script!!! echo Fahrt aui Server abe!!! echo %date% %time% - Login User: %username%. ==== Script usgfüert ohni/fausches Argumänt (%1)! Abbruch durch Chinderschutz.>>log.txt GOTO :eof :rolling echo.|set /p ="|" echo.|set /p =$H echo.|set /p ="/" echo.|set /p =^^^^^ echo.|set /p ="-" echo.|set /p =^^ echo.|set /p ="\" echo.|set /p =^^ goto :eof
usv_cancel.bat
:: by neku1 @ 27.05.2009 :: ///// :: ( o o ) :: oooO-(_)-Oooo :: :: Dieses Script wird von WhatsUp ausgeführt :: Es stopt die usv_shutdown.bat :: in dem es die error.txt Datei löscht :: und so die Abbruch Prozedur einleitet echo off IF EXIST C:\shutdown\error.txt ( echo isch da DEL /F /Q C:\shutdown\error.txt echo %date% %time% - Login User: %username%. =!!= usv_cancel.bat - Script usgfüert! error.txt isch vorhandä gsi u när glöschä wordä!!!>>log.txt ) ELSE ( echo isch nid da... echo %date% %time% - Login User: %username%. =!!= usv_cancel.bat - Script usgfüert! error.txt isch NID vorhandä gsi!!!>>log.txt )