Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Помогите наваять скрипт? Поиск строки в файле.

Ответить
Настройки темы
VBS/WSH/JS - [решено] Помогите наваять скрипт? Поиск строки в файле.

Старожил


Сообщения: 161
Благодарности: 5

Профиль | Отправить PM | Цитировать


Есть файл 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
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата glukin:
Есть файл dns.txt вида »
Упакуйте его в архив и приложите к сообщению.

Цитата glukin:
в цикле »
Это как?

Цитата glukin:
смотреть строку 10.30.0-255.0-255 »
Не вижу в Вашем примере даже относительно похожей строки. Или Вы в «10.30.0-255.0-255» что-то хитро зашифровали, что б не догадались?

Цитата glukin:
то добавлять в конец файла сформированную строку "ИмяУстройства IN A ИПАдрес", строку я знаю как формировать. »
То есть, реальное содержимое «ИмяУстройства IN A ИПАдрес» — лежит на Вас?

Цитата glukin:
когда я формирую это файл - он генерится около 12 часов (пинг по IP с таймаутом 1 сек, если есть пинг, то опрос по SNMP), »
Вы не думали делать хотя бы пинг не последовательно?

Цитата glukin:
так вот - не увеличит ли поиск такого каждого IP в этом файле время работы скрипта в геометрической прогрессии? »
Вы хотите, чтобы скрипт а) читал из файла и б) писал в файл в то время, когда Вы пишете в тот же самый файл из другого приложения? Коллизии могут быть (либо наверняка будут, зависит от того, как именно пишете).

Цитата glukin:
Сумбурно написал... »
Ото ж.

Отправлено: 14:43, 04-03-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить 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
Благодарности: 5

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip spd.zip
(45.6 Kb, 1 просмотров)

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
Благодарности: 5

Профиль | Отправить PM | Цитировать


Цитата megaloman:
после завершения опроса запустите процесс анализа dns.txt на основе dns.txt.tmp »
Как??
Думаю, может, сделать по-другому?
Я 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
Благодарности: 5

Профиль | Отправить PM | Цитировать


Вероятно, задача нерешаема без административных методов. Не могу сообразить, что делать, если устройство выведено из эксплуатации и не пингуется, но в эталонном dns.txt оно есть. И еще - их периодически выключают, то есть они могут быть в эксплуатации, но не пинговаться. (((

Отправлено: 19:20, 04-03-2017 | #6


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


glukin, чтобы выделить не присутствующие во втором файле строки в отдельный файл надо сформировать IP-адрес, поискать его в dns.txt, если его нет - пингуем и пишем в файл dns.txt.tmp - я эту идею уже излагал.

Если устройство выведено из эксплуатации и не пингуется, удалить его из эталонного файла можно только ручками, так как имеются другие устройства в эксплуатации, но не пингуются, так как выключены.

Можно, конечно, перепинговать все имеющиеся в dns.txt устройства, имеющиеся непингуемые записать в отдельный файл, затем опять же глазками его проанализировать.
Наверное, стоит разделить эти задачи: поиск новых и анализ непингуемых.

Вероятно, задача нерешаема без административных методов - на каждый объект должен быть паспорт, нас по требованиям безопасности заставили это сделать. Там отображаются все изменения объекта, от ввода в эксплуатацию, изменения конфигурации и софта, до его утилизации.

А сортировать данные после объединения 2 файлов всё равно придётся, так как Вы собираетесь добавлять в конец файла новые сформированные строки, которые уже выпадают из предыдущего порядка следования.

А для меня пароль недоступен? Боитесь, что контрагайку откручу?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 04-03-2017 в 23:23.


Отправлено: 22:34, 04-03-2017 | #7


Старожил


Сообщения: 161
Благодарности: 5

Профиль | Отправить PM | Цитировать


1. Это сделать я могу.
2. Так я и затеял все это, чтобы не делать ручками. Устройства выключают только на ночь и на выходные, так что можно успеть, но проблема в том, что скрипт работает очень долго (порядка 15 часов), можно и не успеть. А с учетом анализа dns.txt боюсь, что время увеличится в разы.
3. Да, пожалуй.
4. Это все есть, но неудобно, слишком все распределено территориально и слишком много админов.
5. А для чего вообще его сортировать?
6. Пароль выслал.

Отправлено: 10:36, 05-03-2017 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


glukin, к сожалению, цели и задачи я не смог уяснить толком. Посему, могу лишь дать наводку на улучшение той части, которую понял.

Асинхронные запросы Wbem: vbscript: асинхронная обработка множественных запросов WMI — Windows Script Host, HTA (VBScript, JScript) — Коллекция скриптов и идей — Серый форум.
Фоновые задания PowerShell, используемый класс .Net — System.Net.NetworkInformation.Ping: Многопоточный сканер сети | PowerShell и другие скрипты (даю ссылку на кэш Google'а, поскольку сайт Василия, видимо, того… Увы ).

Вы, поскольку знаете C/C++, кроме изложенного выше, можете и вовсе банально использовать в своём приложении несколько потоков. Кроме того, Вы можете писать не в текстовый файл, а в базу данных — Jet или SQL (если есть), в последующем работать с базой данных будет многим проще (фильтрация, запросы и т.п.), нежели с банальным текстовым файлом. В частности, задача:
Цитата glukin:
А можно как-либо сравнить 2 файла, чтобы выделить неприсутствующие во втором файле строки в отдельный файл (с ними потом еще работать другому скрипту) и дописать их в первый файл? »
для двух таблиц базы данных решается одним запросом .
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:57, 05-03-2017 | #9


Старожил


Сообщения: 161
Благодарности: 5

Профиль | Отправить PM | Цитировать


Цель - актуализировать прямую и обратную зоны DNS для DNS-сервера устройств СПД, так, чтобы там не было выведенных из эксплуатации устройств, и , наоборот, не вводить вновь введенные в эксплуатацию устройства туда руками, как это делается сейчас.

"Асинхронные запросы Wbem"
О! Вот это полезная штука, спасибо большое! Потестю на предмет скорости, если будет быстрее хотя бы раза в 2, чем сейчас - решится проблема выключенных устройств, находящихся в эксплуатации.
PowerShell не подходит, так как сервер, где будет работать скрипт - Win2003, и переехать на другой нет возможности, так как только с него разрешен SNMP на устройства СПД.

Я понимаю, что с БД будет работать быстрее, и , возможно, проще, но БД я не умею от слова "вообще".

Отправлено: 11:16, 05-03-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Помогите наваять скрипт? Поиск строки в файле.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход