|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Проверка строки на соответствие правил именования DNS |
|
VBS/WSH/JS - Проверка строки на соответствие правил именования DNS
|
Старожил Сообщения: 161 |
Может, есть у кого готовый скрипт?
Есть строка вида device.domain.zone. Необходимо её проверить на соответствие правилам именования DNS, то есть: англ. буквы, точка, тире, цифры, если что-то не так - выдать error. Как проверить - я примерно понимаю с помощью RegExp, но как проверить, чтобы в строке не было, допустим, 2-3-много точки подряд? 2-3 тире? |
|
Отправлено: 14:40, 28-11-2019 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата glukin:
Цитата glukin:
Цитата glukin:
![]() Пример с шаблоном, найденным мною, и шаблоном коллеги DJ Mogarych: Скрытый текст
Option Explicit Dim arrDNSName Dim objRegExp Dim elem arrDNSName = Array( _ "device.domain.zone", _ "Device1.domain1.ru", _ "device-2.domain.1.ru3", _ "45-deVice.3.domain-4.5ru", _ "45-deVice..domain-4.5ru", _ "45-deVice.3.domain--4.5ru", _ "45-deVice.3.domain-.5ru", _ "45-deVice.3.-domain.5ru", _ "45-deVice.3.domain-4.5ru." _ ) Set objRegExp = WScript.CreateObject("VBScript.RegExp") objRegExp.IgnoreCase = False objRegExp.Pattern = "^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$" For Each elem In arrDNSName If objRegExp.Test(elem) Then WScript.Echo "Match : " & elem Else WScript.Echo "Not match: " & elem End If Next WScript.Echo "===============================================" objRegExp.Pattern = "^([A-Za-z0-9-]+\.){2}[A-Za-z0-9-]+$" For Each elem In arrDNSName If objRegExp.Test(elem) Then WScript.Echo "Match : " & elem Else WScript.Echo "Not match: " & elem End If Next Set objRegExp = Nothing WScript.Quit 0 |
|||
Отправлено: 09:52, 30-11-2019 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 161
|
Профиль | Отправить PM | Цитировать Спасибо.
И всё-таки: точка-дефис или дефис-точка или подобные сочетания недопустимы. Да,я хочу отсечь национальные домены, ибо DNS внутренний, а не интернетный. |
Отправлено: 10:36, 30-11-2019 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата glukin:
Цитата glukin:
|
||
Отправлено: 20:14, 30-11-2019 | #13 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата Iska:
<# [enum]::GetNames("UriHostNameType") Basic 1 узел установлен, однако не удается определить тип. Dns 2 Имя узла представлено в виде DNS-имени. IPv4 3 Имя узла представлено в формате IPv4. IPv6 4 Имя узла представлено в формате IPv6. Unknown 0 Тип имени узла не поддерживается. #> $arr = @( "device.domain.zone" "device.domain.zone." ".device.domain.zone" "Device1.domain1.ru" "device-2.domain.1.ru3" "45-deVice.3.domain-4.5ru" "45-deVice..domain-4.5ru" "45-deVice.3.domain--4.5ru" "45-deVice.3.domain-.5ru" "45-deVice.3.-domain.5ru" "45-deVice.3.domain-4.5ru." ) $arr|%{ $_ + ' - ' + ([uri]::CheckHostName("$_"))} |
|
------- Последний раз редактировалось YuS_2, 01-12-2019 в 08:58. Отправлено: 21:04, 30-11-2019 | #14 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать YuS_2, я исходил из RFC 1034 - Domain names - concepts and facilities:
Цитата:
|
|
Отправлено: 21:52, 30-11-2019 | #15 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Iska, октет тут наверное не при чём
glukin, сделайте простую проверку, какую сможете а более строго проверит уже то ПО, которое будет эти данные использовать |
Отправлено: 00:06, 01-12-2019 | #16 |
Старожил Сообщения: 161
|
Профиль | Отправить PM | Цитировать Busla, не, тут смысл сделать проверку именно до ПО, так как оно не стартует с ошибочными dns-записями.
Iska, извините, забыл добавить, что "--" тоже недопустимо. Вот это вроде работает, но пропускает "--" ^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$ |
Последний раз редактировалось glukin, 01-12-2019 в 00:26. Отправлено: 00:15, 01-12-2019 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Busla:
Цитата glukin:
Цитата glukin:
Скрытый текст
Option Explicit Dim arrDNSName Dim elem arrDNSName = Array( _ "device.domain.zone", _ "Device1.domain1.ru", _ "device--2.domain.1.ru3", _ "45-deVice.3.domain-4.5ru", _ "45-deVice..domain-4.5ru", _ "45-deVice.3.domain--4.5ru", _ "45-deVice.3.domain-.5ru", _ "45-deVice.3.-domain.5ru", _ "45-deVice.3.domain-4.5ru." _ ) With WScript.CreateObject("VBScript.RegExp") .IgnoreCase = False For Each elem In arrDNSName .Pattern = "^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$" If .Test(elem) Then .Pattern = "-{2,}" If Not .Test(elem) Then WScript.Echo "Match : " & elem Else WScript.Echo "Not match: " & elem End If Else WScript.Echo "Not match: " & elem End If Next End With WScript.Quit 0 |
|||
Отправлено: 02:08, 01-12-2019 | #18 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Просто, есть подозрение, что RFC датированный 1987 годом, наверное несколько устарел, к тому же, не думаю, что микрософт выпускает софт противоречащий неким стандартам доменных имен. Искать стандарты просто лень, но есть ссылка на документацию от микрософт. |
|
------- Отправлено: 08:54, 01-12-2019 | #19 |
Старожил Сообщения: 161
|
Профиль | Отправить PM | Цитировать Iska,
Цитата Iska:
|
|
Отправлено: 10:50, 01-12-2019 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Доступ - Глюк с одним из правил встроенного брандмауэра,вообще не настраивается одно из правил | интерактивный | Microsoft Windows 7 | 0 | 11-07-2009 07:06 | |
проверка работоспособности DNS сервера | piling | Microsoft Windows NT/2000/2003 | 14 | 21-05-2009 13:02 | |
[решено] проверка XML-файла на соответствие XML schema в IE 6 и Firefox 2 | dimait | Вебмастеру | 4 | 23-08-2007 02:02 | |
Редактирование DNS из командной строки | keyF | Сетевые технологии | 2 | 29-12-2004 19:08 | |
Как изменить из командной строки DNS на клиенте? | Myckyc | Сетевые технологии | 1 | 26-08-2003 04:20 |
|