Вопрос: Просканировать сеть и разослать файл по шарам | Добавлено: 12.01.10 21:54 |
Автор вопроса: ![]() |
Добрый день, задача в локальной сети просканировать все компы и их расшаренный папки. В каждую обнаруженную расшареную папку скопировать пару файлов.
Первая часть скрипта сканирует сеть и выводит шары но надо научить его что в случае обнаружения скопировать файлы в найденные папки Set objNetwork = CreateObject("Shell.Application").NameSpace(&H12) ' получение объекта "Сетевое окружение"
Set objEntireNetwork = objNetwork.Items().Item("EntireNetwork").GetFolder ' получение объекта "Вся сеть" For Each objNetItem In objEntireNetwork.Items() If objNetItem.Name = "Microsoft Windows Network" Then Set objMSWinNetwork = objNetItem.GetFolder ' получение объекта "Microsoft Windows Network" Exit For End If Next For Each objMSNetItem In objMSWinNetwork.Items() WScript.Echo objMSNetItem.Name & ":" Set objDomain = objMSNetItem.GetFolder ' получение объекта WORKGROUP или DOMAIN For Each objDomainItem In objDomain.Items() WScript.Echo vbTab & "\\" & objDomainItem.Name Set objComputer = objDomainItem.GetFolder ' получение объекта Computer For Each objCompItem In objComputer.Items() If objCompItem.IsFileSystem Then WScript.Echo vbTab & vbTab & objCompItem.Name End If Next Next Next как быть дальше? нужно чтобы все это было в фоновом режиме, чтобы окошки с подтверждением не открывались а файлы просто копировались |
Ответы | Всего ответов: 19 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 80 Ответов: 476 |
Профиль | Цитата | #1 | Добавлено: 12.01.10 22:12 |
айайай! Вирусяку делаеш))) |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 10 |
Профиль | Цитата | #2 | Добавлено: 12.01.10 22:19 |
почти, но в мирных целях я так и так крутил по другому не получается,только если еще вируснее сделать)) в том что в мирных целях создается,достаточно убедится если запустить скрипт и посмотреть как долго он будет сканировать сеть потом копировать файлы, к тому же не забываем про антивирусы если сетка чужая...
задача сетка достаточно большая домена нет, одноранговая сеть единого почтового сервера нет у всех юзеров ИЕ 7 как предустановленные все под админскими записями на каждом компе шара это то что есть как факт,но будет изменено в скором заказчику нужно чтобы у каждой машины в сети был предустановлен в качестве домашней страницы новосозданный мною Интранет сайт, по сети раскинется батник, затем пользователям на собрании будет сказано запустить его на интранет установил гугл аналитикс в батнике в конце ссылки на интранет сайт поставил для примера ?comp=1 таким образом пойму сколько юзеров запустили файл потом планируется при помощи этого же скрипта сделать как бы маленький аддон к интранет порталу, к пользователям автоматически будут падать корп политики относящиеся к соответствующим департаментам,выложенные на интранет портале такой ответ удовлетворяет?) |
Номер ответа: 3 Автор ответа: ![]() ![]() ICQ: 264730390 Вопросов: 2 Ответов: 106 |
Профиль | Цитата | #3 | Добавлено: 13.01.10 06:03 |
Проще сделать это через WMI
Пингуешь комп, если жив - подключаешься к нему через WMI, используешь Win32_Share - получаешь список шар... только шары проверять надо, т.к. WMI выведет тебе и IPC$, и стандартные шары(диски[C$, D$...] плюс шара ADMIN$)и сетевые принтеры... проще батник/скрипт написать, который будет создавать шару, и сказать чтобы юзеры запустили у себя один раз... ...а потом в эту конкретную шару копировать файл(ы) в батнике в конце ссылки на интранет сайт поставил для примера ?comp=1 таким образом пойму сколько юзеров запустили файл
тогда в батнике лучше разные цифры прописывать, т.к. пользователи могут несколько раз запустить... или сделать проверку на повторный запуск... |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 10 |
Профиль | Цитата | #4 | Добавлено: 13.01.10 08:04 |
ну пусть WMI, я просто опыта работы с ним не имею
кстати батник для создания шар не нужен, шары есть практически на каждой машине. Шары с которыми пользователи работают уже долгое время, именно поэтому политики будут раскидываться по этим шарам, для юзеров привычней. Естественно потом весь этот бардак будет исправляться но пока что есть, то есть. Так в гугл аналитиксе я буду считать уников пришедших по этой ссылке. а их число должно равняться количеству пользователей. Если кто поможет реализовать через WMI буду только рад. Хотя лично мне кажется, что мой вариант проще. во первых он выдает нужную шару, стандартные пропускает естественно во вторых уже есть набросанный костяк, надо только чуть-чуть помочь дописать с вариантом копирования файла по сети вот и все. |
Номер ответа: 5 Автор ответа: ![]() ![]() ICQ: 264730390 Вопросов: 2 Ответов: 106 |
Профиль | Цитата | #5 | Добавлено: 13.01.10 08:29 |
Простой VBScript, который через WMI выводит шары текущеко компа в виде имя путь
когда - то писал скрипт копирования по сети VBS/WMI
|
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 10 |
Профиль | Цитата | #6 | Добавлено: 13.01.10 09:19 |
по поводу первого скрипта, его еще надо научить работать с сеткой, WMI не работал но прочитал, что можно задать скажем
во первых через подсеть, скажем по имени IP адреса активного адаптера или же по arrComputers = Array наполнить массив IP адресами For…To…Next есть идеи? а вообще, по сути получается тот же самый скрипт как и у меня, так же выводит значения по пути Домен>>>Имя компа>>>Шара и самое сложное как научить в случае нахождения шары копировать туда? репорт о копировании я потом сам допишу если потребуется |
Номер ответа: 7 Автор ответа: ![]() ![]() ICQ: 264730390 Вопросов: 2 Ответов: 106 |
Профиль | Цитата | #7 | Добавлено: 14.01.10 03:41 |
по поводу первого скрипта, его еще надо научить работать с сеткой
Вместо "compname" подставляй через цикл For имена компов или их IP Здесь http://forum.script-coding.info/viewtopic.php?id=2955 можно взять пример пинга компьютера через vbscript во первых через подсеть, скажем по имени IP адреса активного адаптера
или же по arrComputers = Array наполнить массив IP адресами For…To…Next есть идеи? IP адреса или имена компов можно хранить в текстовом файле. Читаешь через fso весь файл (ReadAll), перебераешь через For Each и самое сложное как научить в случае нахождения шары копировать туда?
Вопрос на засыпку: откуда уверенность, что среди шар, доступных на компе будет хотя бы одна доступна для записи? Проще один раз самому создать, и ее искать... |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 10 |
Профиль | Цитата | #8 | Добавлено: 14.01.10 08:17 |
AxeL пишет:
Вместо "compname" подставляй через цикл For имена компов или их IP Здесь http://forum.script-coding.info/viewtopic.php?id=2955 можно взять пример пинга компьютера через vbscript немного не то, дело в том что компов в сетке около 350, и используется класс B с маской подсети 255.255.0.0 это значит что вариантов для перебора около 65000))) я ведь описал какой бардак в сети творится, нету четкой карты, описание где какой адрес. AxeL пишет:
Вопрос на засыпку: откуда уверенность, что среди шар, доступных на компе будет хотя бы одна доступна для записи? Проще один раз самому создать, и ее искать... отсюда же, в сети полный бардак, никто никогда и не собирался кого либо ограничивать. Шара на фул аксесс- стандартный случай. |
Номер ответа: 9 Автор ответа: ![]() ![]() ICQ: 264730390 Вопросов: 2 Ответов: 106 |
Профиль | Цитата | #9 | Добавлено: 14.01.10 08:57 |
в сети полный бардак, никто никогда и не собирался кого либо ограничивать. Шара на фул аксесс- стандартный случай.
Действовать на удачу? Шара на полный доступ может быть а может и не быть... лучше действовать наверняка. Рабочий скрипт копирования по сети... переделаешь цикл For под себя...
|
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 10 |
Профиль | Цитата | #10 | Добавлено: 14.01.10 09:13 |
спасибо друг за помощь, но это немного не то...если бы такой вариант устроил бы заказчика я просто-напросто написал бы батник.Перебор по IP+заранее подготовить открытые шары, это не то.
Понимаешь конечная цель этой задачи, подготовить пользователя к автоматизации, а не автоматизировать. Поэтому файлы будут раскидываться по шарам, по которым привык ходить пользователь. Я знаю, что все это бардак и жизнь тяжела, но задача такова. Нелегкая, но интересная)) Вариантов ее использования множество, представь что, после того как будет составлена карта сети, ты будешь мгновенно доставлять скопу юзеров нужные документы, независимо от того есть ли у них почта или интернет или нет. Независимо от того забудет он или нет, документ будет лежать у него. Я знаю, что есть портальные решения SharePoint например, но здесь никто не даст на это денег. Я так понимаю, что доработать скрипт, который я дал никак не получается? Он в принципе отлично выполняет первую часть нужного функционала, сканить сеть и выдает нужные и верные данные. Надо подумать как этими данными/путями к шарам воспользоваться и копировать. |
Номер ответа: 11 Автор ответа: ![]() ![]() ICQ: 264730390 Вопросов: 2 Ответов: 106 |
Профиль | Цитата | #11 | Добавлено: 14.01.10 16:32 |
Я так понимаю, что доработать скрипт, который я дал никак не получается?
Получается... Лови свою доработанную версию... ![]()
Понимаешь конечная цель этой задачи, подготовить пользователя к автоматизации, а не автоматизировать. Поэтому файлы будут раскидываться по шарам, по которым привык ходить пользователь.
Значит этот скрипт - подготовка к автоматизации, а предыдущий автоматизация... ![]() Я знаю, что все это бардак и жизнь тяжела, но задача такова. Нелегкая, но интересная))
юююнелегкая, но интересная жизнь садо-мазо... Он в принципе отлично выполняет первую часть нужного функционала, сканить сеть и выдает нужные и верные данные.
получилось быстрее пинга даже (сравнивал) |
Номер ответа: 12 Автор ответа: ![]() ![]() ICQ: 264730390 Вопросов: 2 Ответов: 106 |
Профиль | Цитата | #12 | Добавлено: 14.01.10 16:37 |
ююю читать как ... |
Номер ответа: 13 Автор ответа: ![]() ![]() ICQ: 264730390 Вопросов: 2 Ответов: 106 |
Профиль | Цитата | #13 | Добавлено: 15.01.10 08:07 |
Понимаешь конечная цель этой задачи, подготовить пользователя к автоматизации, а не автоматизировать. Поэтому файлы будут раскидываться по шарам, по которым привык ходить пользователь. Можно сделать следующее, чтобы несколько упорядочить бардак:
При первом проходе по шарам скопировать батник, в котором будет прописано создание шары например таким образом
1 - команда выполнена успешно, 2 - шара закрыта для записи или антивирь заблокировал конкретный файл(McAfee может блокировать inf и exe файлы ... хз что еще может быть По результатам можно определить, на каких компах отсутствуют шары для записи... |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 10 |
Профиль | Цитата | #14 | Добавлено: 15.01.10 08:21 |
AxeL
А ты уверен по поводу своего варианта чуть выше? что-то я протестил вчера разок, не получилось. Сегодня попробую еще раз, с логом. Потом отпишусь Но все равно спасибо)) |
Номер ответа: 15 Автор ответа: ![]() ![]() ICQ: 264730390 Вопросов: 2 Ответов: 106 |
Профиль | Цитата | #15 | Добавлено: 15.01.10 08:51 |
А ты уверен по поводу своего варианта чуть выше? что-то я протестил вчера разок, не получилось. Уверен. по крайней мере у меня получилось скопировать файлы.
Проверь у себя: 1. Drive должен быть без слеша, т.е. 'C:' 2. Путь к папке с копируемыми файлами "Folder_Of_Files_For_Copy" должен везде содержать двойные обратные слеши "\\путь\\к\\папке\\с\\файлами\\" 3. На тестовом компьютере есть расшареная папка с доступом для записи. зашаренные папки (со знаком $ в конце имени) этот скрипт игнорирует. 4. Не блокирует ли антивирус запись файлов по сети? (McAfee умеет это делать на "Ура" ![]() 5. Теоретически, если в имени файла есть пробелы, то он может не скопироваться, хотя у себя проверил - скопировал без проблем... |
|