I know i could always a program to do this but wheres the fun in that?
so I need a program that will go through a list of servers and then a list of their drives and check to see how much free space is left on those drives, from their if it is anything less then 30GB i need it to send an email to me.
i am using psexec to access these remote servers and run cmd. then to email myself i am using postie.
the problem i am having is wrapping that all up in a if-then-else command that will look for the specified free space. It doesnt work right now beacuse for whatever reason it is bring back a true statement when the statement is false because i know the server its checking is more then 30GB free.
This is what i have so far:
@echo off
for /f %%S IN (serverPClist.txt) DO (
echo Checking drives on Server %%S...
for /D %%D IN (C D F G H I J K X V E) DO (
psexec \\%%S cmd /c if exist %%D:\* dir %%D:\ | findstr /c:"bytes" > %temp%\%%S-%%D.txt
)
)
color 0D
for /f %%S IN (serverPClist.txt) DO (
echo. & echo.
echo ********** Displaying output for server %%S... **********
for /D %%D IN (C D E F G I J K) DO (
for /f "tokens=1,2,3,4" %%F IN ('if exist %temp%\%%S-%%D.txt type %temp%\%%S-%%D.txt') DO (
if /i "%%G" == "Dir(s)" echo For the %%D: drive: %%H bytes free space.
if /i "%%G" == "bytes" echo For the %%D: drive: %%F bytes free space.
echo.
)
)
echo Done!
)
echo Generating HTML...
REM this part of the script generates an HTML file with all the relevant information
REM and then launches it using the default browser.
set FileName="C:\Report.html"
echo ^<HTML^> > %FileName%
echo ^<HEAD^> >> %FileName%
echo ^<TITLE^>Free Space on NRCE Servers^</TITLE^> >> %FileName%
echo ^</HEAD^> >> %FileName%
echo ^<BODY^> >> %FileName%
echo ^<CENTER^>^<FONT SIZE=6 COLOR=BLUE^>Free Hard Drive Space Report^</FONT^>^</CENTER^>^<BR^> >> %FileName%
for /f %%S IN (serverPClist.txt) DO (
REM mark the server
echo ^<FONT SIZE=4^>^<B^>%%S^</B^>^</FONT^>^<BR^> >> %FileName%
for /D %%D IN (C D E F G I J K) DO (
for /f "tokens=1,2,3,4" %%F IN ('if exist %temp%\%%S-%%D.txt type %temp%\%%S-%%D.txt') DO (
REM add a line for the drive and free space
if /i "%%G" == "Dir(s)" echo ^<FONT SIZE=3^>Free space on ^<B^>%%D:^</B^> drive: ^<B^>^<FONT
COLOR=GREEN^>%%H^</FONT^>^</B^> bytes free^</FONT^>^<BR^> >> %FileName%
if /i "%%G" == "bytes" echo ^<FONT SIZE=3^>Free space on ^<B^>%%D:^</B^> drive: ^<B^>^<FONT
COLOR=GREEN^>%%F^</FONT^>^</B^> bytes free^</FONT^>^<BR^> >> %FileName%
)
)
REM mark some spacing lines into the HTML file
echo ^<BR^> >> %FileName%
)
echo ^</BODY^> >> %FileName%
echo ^</HTML^> >> %FileName%
REM launch the HTML file
set positive=1
set amount="30,000,000,000"
if %%f leq %amount% set violation=1
if %%h leq %amount% set violation=1
echo %violation%
if %violation% equ %positive% postie -host:(SMTP SERVER) -to:(MY EMAIL) -from:(NETWORK EMAIL) -s:"Server Report" -msg:"THERE IS A VIOLATION!" -a:"C:\ServerReports\Report.html"
echo Done!
If anybody else has anything better plz show me, otherwise i will keep playing around with this coding.
Bookmarks