Pull to refresh

Comments 11

AutoIT чепуха. В Powershell GUI всё можно сделать на раз-два.
D-link DFL серия — это за границей добра и зла. Более неудачной серии роутеров я не встречал. Возможно только Zywall USG.
что там винапи, что там винапи. только павершелл на старых системах нужно ставить отдельно и часть модулей не работает, дотнет местами работает медленно, ну и собирать в ехе нужно сомнительным софтом. впрочем, плюсы павершелла сложно недооценить.

а вот чем вам не угодили DFL и Zywall? просто любопытно.
Если очень кратко, то DFL работал стабильно, но web-интерфейс для конфигурирования — КРАЙНЕ хреновый. А Zyxel Zywall USG (у нас было 4 штуки серии 100) имееет довольно хороший web интерфейс для конфигурации, но он зараза КРАЙНЕ нестабилен в работе. Как пруф можете длянуть changelogs у прошивок в разделах типа bugfix. Как же этот гребаный failover ipsec мне здоровье попортил.(как пример) Еще он сам по себе может зависнуть или залипнут коннекшены и будет капец(особенно с SIP была боль).

спасибо.
мне Zywall попадался, несколько стареньких. Hаботал я с ним совсем немного, уже не помню почему поменяли на микротики.
проблем не было, но настройка фаервола в виде матрицы мне категорически не понравились:)
по части DFL — интерфейс там на самом деле логичный и удобный, просто непривычный. в WW-прошивках старых, и теперь и в RU-новых так иещё удобнее — импорт скрипта через вебморду, сниффер с отображением через вебморду.
а вот по части стабильности… с 210-800-260-800-1600 проблем не было, погонял новый свежий славный 870 — там проблемы пока есть. оригинальный Clavister багфикс выпустил, D-link пока не шевелится.

Самому приходиться делать много не сильно различающихся микротиков, проблему автоматизации я решил следующим образом.
Сделал шаблон конфигурации. Данные которые на всех микротиках разные для удобства назвал XXXX, YYYY — если это какие-либо название, комментарии и прочее. Для айпи адресов которые нужно поменять использую дефолтовые адреса в своей сети(которые никогда нигде не будут использованы да бы не нарваться на случай когда случайно изменил нужный адрес ) думаю в таких случая можно использовать в адреса из сети 127.0.0.0
Далее написал скрипт на PowerShell который берет шаблон(как в текстовый файл) конфигурации и меняет значения XXXX, YYYY, 127.0.0.1, 127.0.0.2 на нужные мне. На выходе создает новый файл с конфигурацией под конкретный микротик.
Правильно писать «рутер» или «маршрутизатор».
image
идея интересная, выложите плиз файл RandomString.au3

по тексту есть ссылка..


но вот его содержимое

`


; =============================================================================
; _Crypto_GetRandomString($iLen[, $iFlag])
; — ; Получение случайной символьной строки заданной длины
;
; $iLen: длина получаемой строки
; $iFlag: какие символы используются при генерации строки
;: 1 — цифры
;: 2 — большие английские буквы
;: 4 — малые английские буквы
;: 8 — основные спецсимволы
;: 16 — дополнительные спецсимволы
;: 32 — русские буквы
;
; При успехе: возвращает бинарную строку
;
; При неудаче: пустая строка:
;: error, extended — код ошибки _Crypto_GetRandomBinary()
;
;: AutoIT v3.3.0.0
; =============================================================================
Func _CryptoGetRandomString($iLen, $iFlag = 15)
Local $iMid, $sABC = "", $sOut = ""
If BitAND($iFlag,1) Then $sABC &= "0123456789"
If BitAND($iFlag,2) Then $sABC &= "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
If BitAND($iFlag,4) Then $sABC &= "abcdefghijklmnopqrstuvwxyz"
If BitAND($iFlag,8) Then $sABC &= "~!@#$%^&*()
"
If BitAND($iFlag,16) Then $sABC &= '`+-=",.<>/?|[]{};:'&"'"
If BitAND($iFlag,32) Then $sABC &= 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя'
Local $iABC = StringLen($sABC)
Local $bPWD = _Crypto_GetRandomBinary($iLen)
If error Then Return SetError(@error, extended, $sOut); Ошибка _Crypto_GetBinary


For $i=1 To BinaryLen($bPWD)
    $iMid = Int(BinaryMid($bPWD,$i,1))*$iABC/0x100+1
    $sOut &= StringMid($sABC, $iMid, 1)
Next
Return $sOut

EndFunc; ==> _Crypto_GetRandomString


; =============================================================================
; _Crypto_GetRandomBinary($iLen)
; — ; Получение случайной строки байтов заданной длины
;
; $iLen: количество байтов в бинарной строке
;
; При успехе: возвращает бинарную строку
;
; При неудаче: возвращаемое значение не является бинарной строкой:
;: error=1, extended=1 — ошибка открытия advapi32.dll
;: error=1, extended=2 — ошибка открытия kernel32.dll
;: error=2 — RunTime ошибка API, extended — код ошибки
;
;: AutoIT v3.3.0.0
; =============================================================================
Func _Crypto_GetRandomBinary($iLen)
Local $phProv = DllStructCreate("ulongptr"), $aRet
Local $pbBuffer = DLLStructCreate("byte[" & $iLen & "]")
; Открытие DLL
Local $hAdvApi = DllOpen("advapi32.dll"), $hKernel = DllOpen("kernel32.dll")
If $hAdvApi=-1 Then Return SetError(1, 1, DllClose($hKernel)); Ошибка открытия advapi32.dll
If $hKernel=-1 Then Return SetError(1, 2, DllClose($hAdvApi)); Ошибка открытия kernel32.dll
; Создание описателя криптохранилища
$aRet = DllCall($hAdvApi, "int", "CryptAcquireContext",

"ptr", DllStructGetPtr($phProv), "ptr", 0, "ptr", 0, "dword", 1, "dword", 0xF0000000)
If $aRet[0]=0 Then $aRet = DllCall($hKernel, "int", "GetLastError")
If UBound($aRet)=1 And $aRet[0]=0x80090016 Then
$aRet = DllCall($hAdvApi, "int", "CryptAcquireContext", "ptr", DllStructGetPtr($phProv), "ptr", 0, "ptr", 0, "dword", 1, "dword", 0xF0000008)
If $aRet[0]=0 Then $aRet = DllCall($hKernel, "int", "GetLastError")
EndIf
If UBound($aRet)>1 Then
; Генерация случайной последовательности байтов
$aRet = DllCall($hAdvApi, "int", "CryptGenRandom",

"ptr", DllStructGetData($phProv, 1), "dword", $iLen, "ptr", DllStructGetPtr($pbBuffer))
If $aRet[0]=0 Then $aRet = DllCall($hKernel, "int", "GetLastError")
; Закрытие описателя криптохранилища
DllCall($hAdvApi, "long", "CryptReleaseContext", _
"ulong_ptr", DllStructGetData($phProv, 1), "dword", 0)
EndIf
DllClose($hKernel)
DllClose($hAdvApi)


If UBound($aRet)=1 Then Return SetError(2, $aRet[0], 0) ; Ошибка API RunTime
Return DllStructGetData($pbBuffer, 1) ; Возврат строки

EndFunc; ==> _Crypto_GetRandomBinary
`

При наличии соединения с Интернетом, проще использовать сервис www.random.org
У него есть API, можно запросами получать данные нужного формата в plaintext, чтобы использовать в скриптах.
> введите ДНС1
> введите ключ на ипсек
Пожалуйста, не делайте так :(

прикольнее СДИ1 (Система\Сервер Доменных Имен) и безпи (Безопасность Протокола Интернет). правильнее наверное Сохранность Межесетевого Протокола…
о! СерДомИм и СохМежПрот.

Sign up to leave a comment.