Что нового

Как написать цикл пинга

millgan

Новичок
Сообщения
42
Репутация
2
Подскажите как написать цикл пинга от 10.12.3.1 до 10.12.3.250
С выводом в TXT Ofline и Online??
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
Код:
$sIP='10.12.3.'
$fOnline = @ScriptDir&'\OnLine.txt'
$fOffline = @ScriptDir&'\OffLine.txt'

For $i=1 to 250
If Ping($sIP&$i) Then
FileOpen($fOnline,8+1)
FileWriteLine($fOnline,$sIP&$i&@CRLF)
FileClose($fOnline)
Else
FileOpen($fOffline,8+1)
FileWriteLine($fOffline,$sIP&$i&@CRLF)
FileClose($fOffline)
EndIf
Next
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Guezt Gutsy
А зачем файлы столько раз открывать - закрывать? ИМХО, можно в начале оба открыть, а в конце оба закрыть:
Код:
$sIP = '10.12.3.'
$fOnline = @ScriptDir & '\OnLine.txt'
$fOffline = @ScriptDir & '\OffLine.txt'

FileOpen($fOnline, 1)
FileOpen($fOffline, 1)
FileWriteLine($fOnline, 'Start ping' & @CRLF & '--------------' & @CRLF & '--------------')
FileWriteLine($fOffline, 'Start ping' & @CRLF & '--------------' & @CRLF & '--------------')
For $i = 1 To 250
	$sNow = @MDAY & '.' & @MON & '.' & @YEAR & ' ' & @HOUR & ':' & @MIN & ':' & @SEC
	$iPing = Ping($sIP & $i)
	If $iPing Then
		FileWriteLine($fOnline, $sNow & @CRLF & $sIP & $i & ' - ' & $iPing & ' msec. - Online' & @CRLF & '--------------')
	Else
		FileWriteLine($fOffline, $sNow & @CRLF & $sIP & $i & ' - Offline' & @CRLF & '--------------')
	EndIf
Next
FileWriteLine($fOnline, 'End ping' & @CRLF & '--------------' & @CRLF & '--------------')
FileWriteLine($fOffline, 'End ping' & @CRLF & '--------------' & @CRLF & '--------------')
FileClose($fOnline)
FileClose($fOffline)
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
madmasles
можно, можно и с параметром 1 открыть, как у тебя, можно и @ScripDir не указывать, много, что можно )) но на практике проверено лучше сразу закрыть, чем в килобайтах кода искать ошибку )) да и в там коде можно и не закрывать файлы раз уж на то пошло, автоматически закроются по завершению работы цикла и выхода из скрипта :smile:
p.s. я даже не запускал этот код так на скорую руку отписался прям в форуме :smile: даже Next забыл добавить - исправлять пришлось ))
вот еще короче пример:
Код:
#include<File.au3>
$sIP='10.12.3.'
$fOnline = @ScriptDir&'\OnLine.txt'
$fOffline = @ScriptDir&'\OffLine.txt'

For $i=1 to 250
If Ping($sIP&$i) Then
_FileWriteLog($fOnline,$sIP&$i&@CRLF)
Else
_FileWriteLog($fOffline,$sIP&$i&@CRLF)
EndIf
Next

;)
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
а еще можно просто делать
Код:
FileWrite($path, $line & @CRLF)

:blum:
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Kaster
Между FileWrite и _FileWriteLog все таки есть разница.

Другое дело, что для маленького скрипта, лучше использовать:
Код:
FileWrite($sFileFullPath, StringFormat('[%.2d.%.2d.%.2d %.2d:%.2d:%.2d] ', @MDAY, @MON, @YEAR, @HOUR, @MIN, @SEC) & $sText & @CRLF)
 
Автор
M

millgan

Новичок
Сообщения
42
Репутация
2
Всем спасибо тему можно закрывать))
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
millgan
достаточно почитать вот это
{TopicSolvedInfo}
;)
 
Верх