|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Помогите наваять скрипт? Поиск строки в файле. |
|
VBS/WSH/JS - [решено] Помогите наваять скрипт? Поиск строки в файле.
|
Старожил Сообщения: 161 |
Есть файл dns.txt вида
c1601.f1_r1_1.m IN A 10.30.4.61 c1601.f1_r1_1_s1.m IN A 10.30.4.61 c1601.kf1_r1_1_s0.m IN A 10.30.4.78 c2811.f1-r1_1.m IN A 10.30.40.1 c2811.f1-r1_1_vl2.m IN A 10.30.40.1 c2811.f1-r1_1_s0-0-0_1.m IN A 10.30.40.10 c7206.f2-r206_1_vl15.m IN A 10.30.40.101 zy782.hd_f2-r1_1_dsl.m IN A 10.30.40.102 zy791.h3_f1-r1_1.m IN A 10.30.40.105 zy791.h3_f1-r1_1_lan.m IN A 10.30.40.105 порядка 6000 строк. Нужно в нем в цикле смотреть строку 10.30.0-255.0-255 и если ее нет, то добавлять в конец файла сформированную строку "ИмяУстройства IN A ИПАдрес", строку я знаю как формировать. Прошу помощи. И еще самый главный вопрос - когда я формирую это файл - он генерится около 12 часов (пинг по IP с таймаутом 1 сек, если есть пинг, то опрос по SNMP), так вот - не увеличит ли поиск такого каждого IP в этом файле время работы скрипта в геометрической прогрессии? Сумбурно написал... |
|
Отправлено: 12:37, 04-03-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата glukin:
Цитата glukin:
Цитата glukin:
Цитата glukin:
Цитата glukin:
Цитата glukin:
Цитата glukin:
|
|||||||
Отправлено: 14:43, 04-03-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать glukin, Сумбурно написал... таки да! Опрашивайте Вашу сеть, пишите результаты в новый файл, например, dns.txt.tmp, после завершения опроса запустите процесс анализа dns.txt на основе dns.txt.tmp, делая необходимые дополнения. А затем я бы еще отсортировал dns.tmp например по IP. Порядок освобождает мысль.
Или, еще лучше, прежде чем пинговать, поищите IP в dns.tmp, и, если он есть, не пингуйте - Вы уже это ранее сделали, зачем делать заново? А то , что пропингуете, запишите в dns.txt.tmp и по окончании, объедините инфу из обоих файлов. |
------- Последний раз редактировалось megaloman, 04-03-2017 в 17:51. Отправлено: 17:46, 04-03-2017 | #3 |
Старожил Сообщения: 161
|
Профиль | Отправить PM | Цитировать Iska,
1. Файл вложил, пароль в личке. PS^ Вам не отправляется личка, пишет: Iska превысил(а) максимальный объем сохраненных персональных сообщений и не может получать новые сообщения, пока не удалит часть старых. 2. Напишу как умею - на С: for(i=0;i<256;i++) for(j=0;j<256;j++) {Тело цикла;} 3. Строка - IP-адрес, формируемый из 10.30 + i + j. 4. Да. 5. Не последовательно - это как? Мне нужно, чтобы весь диапазон был опрошен. 6. Необязательно, можно те IP, которых нет, добавить в отдельный файл, потом этот файл соединить с исходным. |
Последний раз редактировалось glukin, 04-03-2017 в 19:11. Отправлено: 18:51, 04-03-2017 | #4 |
Старожил Сообщения: 161
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Думаю, может, сделать по-другому? Я 1 раз сформирую эталонный файл dns.txt, затем по расписанию пинговать всю сеть на предмет появления новых устройств, формировать новый файл dns.txt.tmp и сравнивать 2 файла. Разницу в файлах дописывать в конец эталона, вот так вроде правильно написал. "А затем я бы еще отсортировал dns.tmp например по IP." Они и так будут по IP, dns.tmp пишется в цикле же i=0-255;j=0-255. А можно как-либо сравнить 2 файла, чтобы выделить неприсутствующие во втором файле строки в отдельный файл (с ними потом еще работать другому скрипту) и дописать их в первый файл? |
||
Последний раз редактировалось glukin, 04-03-2017 в 19:12. Отправлено: 18:55, 04-03-2017 | #5 |
Старожил Сообщения: 161
|
Профиль | Отправить PM | Цитировать Вероятно, задача нерешаема без административных методов. Не могу сообразить, что делать, если устройство выведено из эксплуатации и не пингуется, но в эталонном dns.txt оно есть. И еще - их периодически выключают, то есть они могут быть в эксплуатации, но не пинговаться. (((
|
Отправлено: 19:20, 04-03-2017 | #6 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать glukin, чтобы выделить не присутствующие во втором файле строки в отдельный файл надо сформировать IP-адрес, поискать его в dns.txt, если его нет - пингуем и пишем в файл dns.txt.tmp - я эту идею уже излагал.
Если устройство выведено из эксплуатации и не пингуется, удалить его из эталонного файла можно только ручками, так как имеются другие устройства в эксплуатации, но не пингуются, так как выключены. Можно, конечно, перепинговать все имеющиеся в dns.txt устройства, имеющиеся непингуемые записать в отдельный файл, затем опять же глазками его проанализировать. Наверное, стоит разделить эти задачи: поиск новых и анализ непингуемых. Вероятно, задача нерешаема без административных методов - на каждый объект должен быть паспорт, нас по требованиям безопасности заставили это сделать. Там отображаются все изменения объекта, от ввода в эксплуатацию, изменения конфигурации и софта, до его утилизации. А сортировать данные после объединения 2 файлов всё равно придётся, так как Вы собираетесь добавлять в конец файла новые сформированные строки, которые уже выпадают из предыдущего порядка следования. А для меня пароль недоступен? Боитесь, что контрагайку откручу? ![]() |
------- Последний раз редактировалось megaloman, 04-03-2017 в 23:23. Отправлено: 22:34, 04-03-2017 | #7 |
Старожил Сообщения: 161
|
Профиль | Отправить PM | Цитировать 1. Это сделать я могу.
2. Так я и затеял все это, чтобы не делать ручками. Устройства выключают только на ночь и на выходные, так что можно успеть, но проблема в том, что скрипт работает очень долго (порядка 15 часов), можно и не успеть. А с учетом анализа dns.txt боюсь, что время увеличится в разы. 3. Да, пожалуй. 4. Это все есть, но неудобно, слишком все распределено территориально и слишком много админов. 5. А для чего вообще его сортировать? 6. Пароль выслал. |
Отправлено: 10:36, 05-03-2017 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать glukin, к сожалению, цели и задачи я не смог уяснить толком. Посему, могу лишь дать наводку на улучшение той части, которую понял.
Асинхронные запросы Wbem: vbscript: асинхронная обработка множественных запросов WMI — Windows Script Host, HTA (VBScript, JScript) — Коллекция скриптов и идей — Серый форум. Фоновые задания PowerShell, используемый класс .Net — System.Net.NetworkInformation.Ping: Многопоточный сканер сети | PowerShell и другие скрипты (даю ссылку на кэш Google'а, поскольку сайт Василия, видимо, того… Увы ![]() Вы, поскольку знаете C/C++, кроме изложенного выше, можете и вовсе банально использовать в своём приложении несколько потоков. Кроме того, Вы можете писать не в текстовый файл, а в базу данных — Jet или SQL (если есть), в последующем работать с базой данных будет многим проще (фильтрация, запросы и т.п.), нежели с банальным текстовым файлом. В частности, задача: Цитата glukin:
![]() |
|
Отправлено: 10:57, 05-03-2017 | #9 |
Старожил Сообщения: 161
|
Профиль | Отправить PM | Цитировать Цель - актуализировать прямую и обратную зоны DNS для DNS-сервера устройств СПД, так, чтобы там не было выведенных из эксплуатации устройств, и , наоборот, не вводить вновь введенные в эксплуатацию устройства туда руками, как это делается сейчас.
"Асинхронные запросы Wbem" О! Вот это полезная штука, спасибо большое! Потестю на предмет скорости, если будет быстрее хотя бы раза в 2, чем сейчас - решится проблема выключенных устройств, находящихся в эксплуатации. PowerShell не подходит, так как сервер, где будет работать скрипт - Win2003, и переехать на другой нет возможности, так как только с него разрешен SNMP на устройства СПД. Я понимаю, что с БД будет работать быстрее, и , возможно, проще, но БД я не умею от слова "вообще". |
Отправлено: 11:16, 05-03-2017 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Поиск и замена строки в *.ini файле | Akriaro | Скриптовые языки администрирования Windows | 5 | 17-12-2015 13:31 | |
CMD/BAT - Поиск строки в файле | tmpnikl | Скриптовые языки администрирования Windows | 9 | 08-11-2013 21:18 | |
VBS/WSH/JS - [решено] Поиск строки по маске в txt файле и замена всей строки из InputBox | ultrarare | Скриптовые языки администрирования Windows | 11 | 03-07-2013 14:37 | |
CMD/BAT - Поиск и изменение строки в файле. | climber89 | Скриптовые языки администрирования Windows | 2 | 31-01-2013 13:25 | |
VBS/WSH/JS - Поиск\редактирование строки в текстовом файле | pavvel | Скриптовые языки администрирования Windows | 2 | 11-04-2012 16:38 |
|