понедельник, 21 ноября 2011 г.

Получение S.M.A.R.T. параметров жестких дисков по сети

Для считывания S.M.A.R.T. параметров жестких дисков локального компьютера существует множество программ. Описывать их я не буду, потому что ни одна из них не позволяет считать S.M.A.R.T. удаленно по сети, имея права администратора домена. Поиск по просторам интернета ничего путного и бесплатного мне не дал, поэтому мне пришлось подумать как эту задачу решить самому. 

Недавно мне на глаза попалась небольшая консольная программка smartctl из комплекта smartmontools. Для того, чтобы запустить её на удаленном компьютере понадобится программа psexec, входящая в пакетPsTools от SysInternals.
Для работы я написал 2 скрипта: 
net_smart.bat:

@echo on
del netlist.txt
net view >> netlist.txt
for /F "eol=K skip=3 tokens=1" %%i in (netlist.txt) do (
for %%j in (smartctl.*) do copy %%j %%i\admin$
psexec -s %%i smartctl.bat )


и smartctl.bat:

@Echo on
Set $DST=\\server\share\smart
md "%$DST%\%COMPUTERNAME%"
del smartctl.txt
smartctl.exe --scan >> smartctl.txt
for /F "tokens=1" %%i in (smartctl.txt) do smartctl.exe -a %%i >> "%$DST%\%COMPUTERNAME%\%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%.txt"


Файл net_smart.bat сканирует сеть, сохраняет список компьютеров в файл netlist.txt (предварительно его очистив) и затем поочередно на каждый компьютер копирует файлы smartctl.bat и smartctl.exe и при помощи программы psexec. Там, удаленно, запускает файл smartctl.bat, который считывает количество и имена установленных жестких дисков в smartctl.txt, затем последовательно считывается S.M.A.R.T. c каждого установленного в системе жесткого диска и складывает в папку в виде текстовых файлов, указанную в строке: 
Set $DST=\\server\share\smart
файла smartctl.bat.
Хочу обратить внимание на то, что в строке 
for /F "eol=K skip=3 tokens=1" %%i in (netlist.txt) do (
файла net_smart.bat символ К в параметре eol=K русский и должен быть в ДОС кодировке.

Комментариев нет:

Отправить комментарий