Тема: AHK: on-off-Nmap
Приветствую, есть готовые скрипты для выявления включенных рабочих станций в определенное время посредством Nmap,
не получается адаптировать для работы в локальной сети предприятия, файл Result создается, но информация в нем отсутствует. Подскажите в чем ошибка.
первый скрипт
name=settings
#Persistent
IniRead, BatFile, %name%.ini, Rep, BatFile
IniRead, Delay, %name%.ini, Rep, Delay
IniRead, InfoDir, %name%.ini, Rep, InfoDir
IniRead, ActRep, %name%.ini, Rep, ActRep
SetTimer, CheckAws, %Delay%
return
CheckAws:
; проверка состояния рабочих станций
;********************************************************************************
SetTimer, CheckAws, off
RunWait %BatFile%
FileReadLine ActiveLine, %InfoDir%%ActRep%, 2
StringSplit, word_array, ActiveLine, %A_SPACE%,
FileCopy %InfoDir%%ActRep%, %A_WorkingDir%\CheckState-%word_array8%.txt, 1
return
второй скрипт
name=settings
IniRead, InfoDir, %name%.ini, Rep, InfoDir
IniRead, Pattern, %name%.ini, Rep, Pattern
IniRead, Exclude, %name%.ini, Rep, Exclude
Output:=SUBSTR(Pattern,12,7)
Output=Result %Output%.txt
; анализ логов состояний рабочих станций
;********************************************************************************
FileDelete, test.log
FileDelete, TestSort.log
FileDelete, dates.txt
FileDelete, %Output%
FileAppend, Статистика собрана:`n, dates.txt
Loop, %Pattern%
{
FileGetTime, LogCreationTime, %A_LoopFileName%
DayDD:=SUBSTR(LogCreationTime,7,2)
DayMM:=SUBSTR(LogCreationTime,5,2)
DayYYYY:=SUBSTR(LogCreationTime,1,4)
TimeHH:=SUBSTR(LogCreationTime,9,2)
TimeMM:=SUBSTR(LogCreationTime,11,2)
TimeSS:=SUBSTR(LogCreationTime,13,2)
FileAppend, %DayDD%.%DayMM%.%DayYYYY% в %TimeHH%:%TimeMM%:%TimeSS%`n, dates.txt
}
Loop, %Pattern%
{
Analyze(A_LoopFileName, Exclude)
}
FileRead, Stations, Test.log
Sort Stations
FileAppend, %Stations%, TestSort.log
LineNum=0
Names=
LastStr=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 IP Станция Логин Фамилия Имя
Empty=: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
Loop, Read, TestSort.log
{
LineNum:=LineNum+1
Loop, parse, A_LoopReadLine, %A_Tab%
AWS_%LineNum%_%A_Index%=%A_LoopField%
CurrIP:=AWS_%LineNum%_1
CurrDate:=AWS_%LineNum%_2
CurrName:=AWS_%LineNum%_3
CurrStr=%Empty% %CurrIP% %A_Tab% %CurrName%
TmpStr=%CurrStr%
Pos1:=(CurrDate-1)*2
Pos2:=CurrDate*2
CurrStr1:=SUBSTR(TmpStr,1,Pos1)
CurrStr2:=SUBSTR(TmpStr,Pos2)
CurrStr=%CurrStr1%v%CurrStr2%
If Substr(LastStr,62)<>Substr(CurrStr,62)
{
CurrUser:=FindUser(CurrName, InfoDir)
RusName=
If CurrUser<>""
RusName:=RusUser(CurrUser, InfoDir)
FileAppend, %LastStr% %A_Tab% %Names%`n, %Output%
LastStr=%CurrStr%
Names=%CurrUser% %A_Tab% %RusName%
}
Else
{
TmpStr=%LastStr%
Pos1:=(CurrDate-1)*2
Pos2:=CurrDate*2
CurrStr1:=SUBSTR(TmpStr,1,Pos1)
CurrStr2:=SUBSTR(TmpStr,Pos2)
LastStr=%CurrStr1%v%CurrStr2%
}
}
FileAppend, %LastStr% %A_Tab% %Names%`n, %Output%
Return
;********************************************************************************
;*********************************** ФУНКЦИИ ************************************
;********************************************************************************
Analyze(FileName, Exclude)
{
; Анализ отдельного лога за день
;********************************************************************************
FileReadLine ActiveLine, %FileName%, 2
StringSplit, word_array, ActiveLine, -,
CheckDay:=Substr(word_array3, 1, 2)
StringSplit, word_array, ActiveLine, %A_SPACE%,
FileAppend, %word_array8% %word_array9%`n, dates.txt
CountExc=1
model=appears
Loop, read, %FileName%
If InStr(A_LoopReadLine,model)>0
{
StringSplit, word_array, A_LoopReadLine, %A_SPACE%,
If word_array3=%model%
{
AwsIP=%word_array2%
AwsName=*
}
Else
{
AwsIP=%word_array3%
StringReplace, AwsIP, AwsIP,(,, All
StringReplace, AwsIP, AwsIP,),, All
AwsName=%word_array2%
StringReplace, AwsName, AwsName, All
}
ExclAws=No
Loop, read, %Exclude%
{
StringSplit, word_array, A_LoopReadLine, %A_Tab%,
If word_array1=%AwsIP%
{
ExclAws=Yes
Break
}
}
If AwsName <> *
If ExclAws=No
FileAppend, %AwsIP%%A_TAB%%CheckDay%%A_TAB%%AwsName%`n, test.log
AwsIP=
ExclAws=No
}
return
}
FindUser(CurrName, InfoDir)
{
; Определение логина пользователя
;********************************************************************************
User=
Loop, read, %InfoDir%Goblin.txt
{
StringSplit, word_array, A_LoopReadLine, %A_Tab%,
TmpAws=%word_array1%
TmpName=%word_array2%
StringUpper TmpAws, TmpAws
StringUpper CurrName, CurrName
If TmpAws=%CurrName%
{
StringReplace, TmpName, TmpName, (Unknown) (Вышел из системы),, All
StringReplace, TmpName, TmpName, (Logged Out),, All
StringReplace, TmpName, TmpName, (Вышел из системы),, All
StringReplace, TmpName, TmpName,MSK\,, All
User=%TmpName%
Break
}
}
Loop, read, %InfoDir%Susavir.txt
{
StringSplit, word_array, A_LoopReadLine, %A_Tab%,
TmpAws=%word_array1%
TmpName=%word_array2%
StringUpper TmpAws, TmpAws
StringUpper CurrName, CurrName
If TmpAws=%CurrName%
{
StringReplace, TmpName, TmpName, (Unknown) (Вышел из системы),, All
StringReplace, TmpName, TmpName, (Logged Out),, All
StringReplace, TmpName, TmpName, (Вышел из системы),, All
StringReplace, TmpName, TmpName,MSK\,, All
User=%TmpName%
Break
}
}
return User
}
RusUser(CurrName, InfoDir)
{
; Определение Русского имени пользователя
;********************************************************************************
User=
Loop, read, %InfoDir%Users.txt
{
Loop, parse, A_LoopReadLine, %A_Tab%
{
If A_Index=1
RUser=%A_LoopField%
If A_Index=2
EUser=%A_LoopField%
}
StringUpper EUser, EUser
StringUpper CurrName, CurrName
If EUser=%CurrName%
{
User=%RUser%
Break
}
}
return User
}
файл настроек settings.ini
[Rep]
InfoDir=C:\Test\Scripts\Info\
ActRep=Active.txt
Pattern=CheckState-2011-06-??.txt
Exclude=exceptions.ini
BatFile=nmap.bat
Delay=-30000000