INFORMATICA
BATCH - SCRIPT
PING: Batch dos
Questo batch permette di tenere monitorati tramite ping, gli apparecchi hardware, e riceve la segnalazione tramite mail, appena una di queste non risponde.
Inserire nel file batch le righe di comando qui sotto evidenziate in azzurro
Inserire nel file batch le righe di comando qui sotto evidenziate in azzurro
@ECHO OFF
TITLE Controllo IP
;-----------------------------------
SET MachineList=lista.txt
SET ResultsFile=results.txt
;-----------------------------------
CLS
ECHO.
IF NOT EXIST "%MachineList%" (
ECHO Non riesco a trolare l'elenco: %MachineList%
PAUSE>NUL
GOTO :EOF
)
ECHO Sto controllando tutte le macchine dell'elenco %MachineList% . . .
ECHO.
FOR /f "tokens=*" %%M in (%MachineList%) do CALL :CHECK "%%M"
GOTO :EOF
:CHECK
SET Machine=%~1
SET Machine=%Machine: =%
PING -n 2 -w 2000 %Machine%>NUL
rem IF %ERRORLEVEL% NEQ 0 ECHO %Machine% did not respond at %Time%>>%ResultsFile%
if not errorlevel 1 goto EOF
mailsend -ssl -port 465 -smtp smtp.gmail.com -auth-login -to "destinatario@destinatario.it " -from "mittente@gmail.com" -sub "%date% ALLE %time% LA POSTAZIONE %Machine% NON HA RISPOSTO AL PING" < FileConMessaggioMail.txt -user mittente@gmail.com -pass "PasswordAccountMittente" -attach "AllegatoMail.log"
EXIT /B
:EOF
EXIT /B
TITLE Controllo IP
;-----------------------------------
SET MachineList=lista.txt
SET ResultsFile=results.txt
;-----------------------------------
CLS
ECHO.
IF NOT EXIST "%MachineList%" (
ECHO Non riesco a trolare l'elenco: %MachineList%
PAUSE>NUL
GOTO :EOF
)
ECHO Sto controllando tutte le macchine dell'elenco %MachineList% . . .
ECHO.
FOR /f "tokens=*" %%M in (%MachineList%) do CALL :CHECK "%%M"
GOTO :EOF
:CHECK
SET Machine=%~1
SET Machine=%Machine: =%
PING -n 2 -w 2000 %Machine%>NUL
rem IF %ERRORLEVEL% NEQ 0 ECHO %Machine% did not respond at %Time%>>%ResultsFile%
if not errorlevel 1 goto EOF
mailsend -ssl -port 465 -smtp smtp.gmail.com -auth-login -to "destinatario@destinatario.it " -from "mittente@gmail.com" -sub "%date% ALLE %time% LA POSTAZIONE %Machine% NON HA RISPOSTO AL PING" < FileConMessaggioMail.txt -user mittente@gmail.com -pass "PasswordAccountMittente" -attach "AllegatoMail.log"
EXIT /B
:EOF
EXIT /B
Il file lista.txt contiene l'elenco degli ip o nomi degli hosts da tenere monitorati.
Esempio di cosa inserire nel file.
192.168.1.1
192.168.1.200
notebook
192.168.1.150
192.168.1.200
notebook
192.168.1.150
Inserire un solo IP o nome per riga.
Il file results.txt è da creare e lasciare vuoto.
Entrambi i files txt, vanno creati nella stessa directory dove è stato salvato il batch.
Le parti in rosso, sono da personalizzare.
mittente@gmail.com può essere anche un dominio gestito tramite le Google Apps.
Naturalmente la parte di comandi che invia la notifica tramite MAILSEND... può essere sostituita dal comando BLAT che trovate sempre in alto a questa pagina.
Il file results.txt è da creare e lasciare vuoto.
Entrambi i files txt, vanno creati nella stessa directory dove è stato salvato il batch.
Le parti in rosso, sono da personalizzare.
mittente@gmail.com può essere anche un dominio gestito tramite le Google Apps.
Naturalmente la parte di comandi che invia la notifica tramite MAILSEND... può essere sostituita dal comando BLAT che trovate sempre in alto a questa pagina.
DOS: Inviare mail da batch
Scaricare il programma BLAT da qui
Inserire nel file batch le righe di comando qui sotto evidenziate in azzurro
blat -install IndirizzoServerSMTP mittente@mittente.it
blat FileConMessaggioMail.txt -to destinatario@destinatario.it -cc destinatarioCC@destinatario.it -subject "titolo della mail" -attacht "AllegatoMail.log"
Le parti in rosso, sono da personalizzare.
Inviare mail tramite script in Visual Basic
Inserire nel file batch le righe di comando qui sotto evidenziate in azzurro
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "titolo della mail"
objMessage.From = "mittente@gmail.com"
objMessage.To = "destinatario@destinatario.it"
objMessage.TextBody = "Testo della mail"
'objMessage.AddAttachment "AllegatoMail.log"
'==This section provides the configuration information for the remote SMTP server.
'==Normally you will only change the server name or IP.
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'Name or IP of Remote SMTP Server
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
'Server port (typically 25)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "mittente@gmail.com"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "PasswordAccountMittente"
objMessage.Configuration.Fields.Update
'==End remote SMTP server configuration section==
objMessage.Send
objMessage.Subject = "titolo della mail"
objMessage.From = "mittente@gmail.com"
objMessage.To = "destinatario@destinatario.it"
objMessage.TextBody = "Testo della mail"
'objMessage.AddAttachment "AllegatoMail.log"
'==This section provides the configuration information for the remote SMTP server.
'==Normally you will only change the server name or IP.
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'Name or IP of Remote SMTP Server
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
'Server port (typically 25)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "mittente@gmail.com"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "PasswordAccountMittente"
objMessage.Configuration.Fields.Update
'==End remote SMTP server configuration section==
objMessage.Send
Le parti in rosso, sono da personalizzare.
mittente@gmail.com può essere anche un dominio gestito tramite le Google Apps
DOS: Inviare mail da batch tramite smtp.gmail.com che richiede SSL
Scaricare il programma MAILSEND da qui
Inserire nel file batch le righe di comando qui sotto evidenziate in azzurro
Inserire nel file batch le righe di comando qui sotto evidenziate in azzurro
mailsend
-ssl -port 465 -smtp smtp.gmail.com -auth-login -to "destinatario@destinatario.it"
-from "mittente@gmail.com"
-sub "titolo della mail"
< FileConMessaggioMail.txt -user mittente@gmail.com -pass
"PasswordAccountMittente" -attach "AllegatoMail.log"
Le parti in rosso, sono da personalizzare.
mittente@gmail.com può essere anche un dominio gestito tramite le Google Apps
PERMESSI SU CARTELLE E FILES DA DOS
Se avete la necessità di cambiare i permessi di protezione su più cartelle contemporaneamente, potete creare un batch dos.
Prima di tutto è necessario scaricare il software SetACL.exe dal link http://helgeklein.com/download/ , poi nella stessa cartella dove è stato installato, creare il file .BAT contenente i comandi che vi risultano utili.
Prima di tutto è necessario scaricare il software SetACL.exe dal link http://helgeklein.com/download/ , poi nella stessa cartella dove è stato installato, creare il file .BAT contenente i comandi che vi risultano utili.
Qui sotto alcuni comandi ( evidenziate in azzurro) che ho utilizzato:
1) Imposterà il controllo completo per l'utente EveryOne sulla cartella C:e scriverà il log su c:\log.txt
1) Imposterà il controllo completo per l'utente EveryOne sulla cartella C:e scriverà il log su c:\log.txt
SetACL -on C:-ot file -actn ace -ace "n:EveryOne;p:full" -actn rstchldrn -rst "dacl,sacl" -log c:\log.txt
2) Imposterà il controllo completo per l'utente EveryOne sul registro di sistema HKEY_CLASSES_ROOT e scriverà il log su c:txt
SetACL -on "hkcr" -ot reg -actn ace -ace "n:EveryOne;p:full" -actn rstchldrn -rst "dacl,sacl" -log c:\log.txt
Utilizzando il comando SetACL -help verranno mostrati tutte le opzioni.
Non è possibile utilizzare SetACL per impostare i diritti sui singoli file, per fare questo ho usato un altro comando Calcs (Change Access Control Lists) che dovrebbe venire installato di default con windows, dalla versione 2000 in poi (da Windows Vista è stato aggiunto anche Icacls).
Qui sotto altri 2 esempi che ho utilizzato sempre nello stesso batch:
1) Imposterà il controllo completo per l'utente EveryOne su tutti i file .INI nella cartella c:
cacls "C:.ini" /e /C /g Everyone:F
1) Imposterà solo il permesso di lettura per l'utente EveryOne sul file win.ini nella cartella c:
cacls "C:\win.ini" /e /r Everyone
VISUALIZZATORE EVENTI: CANCELLA TUTTI GLI EVENTI
Questo batch permette di cancellare tutti gli eventi di windows 7
Inserire nel file batch le righe di comando qui sotto evidenziate in azzurro
@echo off
FOR /F "tokens=1,2*" %%V IN ('bcdedit') DO SET adminTest=%%V
IF (%adminTest%)==(Access) goto noAdmin
for /F "tokens=*" %%G in ('wevtutil.exe el') DO (call :do_clear "%%G")
echo.
echo goto theEnd
:do_clear
echo clearing %1
wevtutil.exe cl %1
goto :eof
:noAdmin
exit
Eseguire poi il batch come amministratore.
IP: CONFIGURARE CONNESSIONE LAN IN DHCP
Questo batch permette di configurare da dos la connessione lan in modalità DHCP.
Inserire nel file batch le righe di comando qui sotto evidenziate in azzurro:
netsh interface ipv4 set address name="Connessione alla rete locale (LAN)" source=dhcp
netsh interface ipv4 set dns name="Connessione alla rete locale (LAN)" source=dhcp
netsh interface ipv4 set wins name="Connessione alla rete locale (LAN)" source=dhcp
"Connessione alla rete locale (LAN)" è eventualmente da cambiare con il nome della connessione che trovate in Connessione di rete della sceda lan
Eseguire poi il batch come amministratore.
IP: CONFIGURARE CONNESSIONE LAN CON IP FISSO
Questo batch permette di configurare da dos la
connessione lan con ip fisso.
Inserire nel file batch le righe di
comando qui sotto evidenziate in azzurro:
netsh
interface ipv4 set address name="Connessione alla
rete locale (LAN)" static IndirizzoIP IPSubnetMask
IPGateway store=persistent
netsh
interface ipv4 add address name="Connessione alla
rete locale (LAN)" SecondoIP
IPSecondoSubnetMask
netsh
interface ip set dns "Connessione alla rete locale
(LAN)" static addr=IPDns Primary
Le parti in rosso, sono da personalizzare.
"Connessione alla rete locale
(LAN)" è eventualmente da cambiare
con il nome della connessione che trovate in Connessione di rete della sceda lan
Eseguire poi il batch come amministratore.
SCRIPT VISUAL BASIC X NOTIFICA SCADENZA PASSWORD DOMINIO
Questo script in visual basic, permette se ad esempio inserito tramite GPO di logon, di notificare all'utente eventuale vicina scadenza della password dell'account di dominio.
Inserire nel file vbs le righe di comando qui sotto evidenziate in azzurro.
'========================================
' First, get the domain policy.
'========================================
Dim oDomain
Dim oUser
Dim maxPwdAge
Dim numDaysA
Dim warningDays
warningDays = 40
Set LoginInfo = CreateObject("ADSystemInfo")
Set objUser = GetObject("LDAP://" & LoginInfo.UserName & "")
strDomainDN = UCase(LoginInfo.DomainDNSName)
strUserDN = LoginInfo.UserName
Set oDomain = GetObject("LDAP://" & strDomainDN)
Set maxPwdAge = oDomain.Get("maxPwdAge")
'========================================
' Calculate the number of days that are
' held in this value.
'========================================
numDays = CCur((maxPwdAge.HighPart * 2 ^ 32) + _
maxPwdAge.LowPart) / CCur(-864000000000)
'WScript.Echo "Maximum Password Age: " & numDays
'========================================
' Determine the last time that the user
' changed his or her password.
'========================================
Set oUser = GetObject("LDAP://" & strUserDN)
'========================================
' Add the number of days to the last time
' the password was set.
'========================================
whenPasswordExpires = DateAdd("d", numDays, oUser.PasswordLastChanged)
fromDate = Date
daysLeft = DateDiff("d",fromDate,whenPasswordExpires)
'WScript.Echo "Password Last Changed: " & oUser.PasswordLastChanged
if (daysLeft < warningDays) and (daysLeft > -1) then
Msgbox "La password scade tra " & daysLeft & " giorni" & " il " & _
whenPasswordExpires &chr(13) & chr(13) & "Premi CTRL + ALT + CANC " &_
"e seleziona l'opzione 'Cambia password'.", 0, "AVVISO SCADENZA PASSWORD"
End if
'========================================
' Clean up.
'========================================
Set oUser = Nothing
Set maxPwdAge = Nothing
Set oDomain = Nothing
' First, get the domain policy.
'========================================
Dim oDomain
Dim oUser
Dim maxPwdAge
Dim numDaysA
Dim warningDays
warningDays = 40
Set LoginInfo = CreateObject("ADSystemInfo")
Set objUser = GetObject("LDAP://" & LoginInfo.UserName & "")
strDomainDN = UCase(LoginInfo.DomainDNSName)
strUserDN = LoginInfo.UserName
Set oDomain = GetObject("LDAP://" & strDomainDN)
Set maxPwdAge = oDomain.Get("maxPwdAge")
'========================================
' Calculate the number of days that are
' held in this value.
'========================================
numDays = CCur((maxPwdAge.HighPart * 2 ^ 32) + _
maxPwdAge.LowPart) / CCur(-864000000000)
'WScript.Echo "Maximum Password Age: " & numDays
'========================================
' Determine the last time that the user
' changed his or her password.
'========================================
Set oUser = GetObject("LDAP://" & strUserDN)
'========================================
' Add the number of days to the last time
' the password was set.
'========================================
whenPasswordExpires = DateAdd("d", numDays, oUser.PasswordLastChanged)
fromDate = Date
daysLeft = DateDiff("d",fromDate,whenPasswordExpires)
'WScript.Echo "Password Last Changed: " & oUser.PasswordLastChanged
if (daysLeft < warningDays) and (daysLeft > -1) then
Msgbox "La password scade tra " & daysLeft & " giorni" & " il " & _
whenPasswordExpires &chr(13) & chr(13) & "Premi CTRL + ALT + CANC " &_
"e seleziona l'opzione 'Cambia password'.", 0, "AVVISO SCADENZA PASSWORD"
End if
'========================================
' Clean up.
'========================================
Set oUser = Nothing
Set maxPwdAge = Nothing
Set oDomain = Nothing
Il numero in rosso è da personalizzare, con il numero di giorni prima che deve apparire la segnalazione.
Se hai trovato utili questi appunti...