![]() |
определение IP и подключение шары
Добрый день!
могу конечно повториться, не успел перечитать весь форум... помогите составить батник нужно в зависимости от IP подключать разные сетевые ресурсы (шары) например определенной группе IP подключить одни сетевые ресурсы (шары) а всем остальным другие... заранее благодарен.... |
1. Почему именно IP?.. Чем, к примеру, не устраивают обычные глобальные группы?
2. Как будут определяться IP?.. интервалом?.. подсетью?.. списком? |
схема такая...
каждый комп после загрузки винды берет батник из общей шары (щара уже подключена на всех компах) дальше этот батник в зависимости от IP компа с которого он запущен, определяет какие еще шары подключить этому IP, синхронизацию времени (с разными серверами) и т.п. |
Цитата:
|
да!
ну или для групп IP, если это возможно (было бы супер) |
Вариант 1:
Код:
@Echo Off Код:
@Echo Off |
"WMIC NICCONFIG Where Index=1 Get IPAddress|FindStr "."" не является внутренней
или внешней командой, исполняемой программой или пакетным файлом. вот такое вот выдает :( |
WildVic, у тя какая ОСь?.. WMIC.EXE включена начиная с XP/2003
|
а еще такое
c:\bat>WMIC NICCONFIG Where IPEnabled=True Get Index,IP Узел - ??? ОШИБКА: Код = 0x80041017 Описание = Недопустимый запрос Услуга = WMI |
CMD-команда для проверки:
Код:
WMIC NICCONFIG Where IPENabled=TRUE Get IPAddress Цитата:
|
просто из консоли показывает IP
а из батника пишет ошибку :( Microsoft Windows XP [Версия 5.1.2600] (С) Корпорация Майкрософт, 1985-2001. c:\bat>forum.bat "WMIC NICCONFIG Where Index=1 Get IPAddress|FindStr "."" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. c:\bat> |
Цитата:
вопщем просто из консоли IP показывает: Microsoft Windows XP [Версия 5.1.2600] (С) Корпорация Майкрософт, 1985-2001. c:\bat>WMIC NICCONFIG Where IPENabled=TRUE Get IPAddress IPAddress {"172.17.110.101"} а из батника нехочет :( Microsoft Windows XP [Версия 5.1.2600] (С) Корпорация Майкрософт, 1985-2001. c:\bat>forum.bat "WMIC NICCONFIG Where Index=1 Get IPAddress|FindStr "."" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. |
Цитата:
немного изменил 1-й батник, проверь (у меня на 2003-й вроде пашет) |
странно... на других компах работает... на моем валит ошибки (см. выше) :(
не знаеш в чем бок может быть? |
WildVic, попробуй последнюю редакцию батника... WMIC капризен... это типа нормально (на разных осях ведет себя по разному)... но если в консоли выдает, значит и в батнике заставим ;)
|
та же картина :(
на трех других компах нормально пашет... на моем нехочет... оно то впринципе все равно, но не факт, что из моих 100 компов непопадетца такой как у меня капризный... |
Цитата:
2. Выполнить батник с логированием в файл: "Batnik.CMD >Batnik.LOG 2>&1" 3. Batnik.LOG - в студию. |
c:\bat>For /F "Tokens=1 Skip=1 Delims={,} " %i In ('WMIC NICCONFIG Where IPEnabled=TRUE Get IPAddress') Do GoTo :%~i
"WMIC NICCONFIG Where IPEnabled=TRUE Get IPAddress" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. c:\bat>Rem ╥≤≥ c:\bat>Rem ∩≡εΣεδµσφΦσ c:\bat>Rem ßα≥φΦΩα c:\bat>Exit /B 0 |
а батник из одной строки выполняется?
Код:
WMIC NICCONFIG Where IPEnabled=TRUE Get IPAddress |
Когда мне понадобилось узнать текущие адреса всех сетевушек, я анализировал таблицу шлюзов (показалось так проще всего), хитростей WMIc не знаю, но чую нужно эту команду трясти. В любом случае, при попытке повторить строку
WMIC NICCONFIG Where Index=1 Get IPAddress - не получил ровным счетом ничего. Перебрав индексы до 4го и получив также по 2 пустые строки было забросил, но возник вопрос, почему у меня не работает и тогда пустил эту команду без запроса get ipaddress и был поражен количеством инфы. Моя встроенная сетевушка нашлась только на 13м, счастливом месте.... К чему это лирическое отступление? Собственно брать первый попавшийся интерфейс стремно - у некоторых может не сработать. Нужен перебор индексов. |
NiOl, если все рабочие станции парка с одной сетевухой и подняты "с нуля", то "Index=1" нормальное условие, при наличии одного IP-интерфейса можно ставить условие "Where IPEnabled=TRUE", в остальных случаях прежде чем садиться писать скрипт, нужно четко определить однозначный алгоритм фильтрации интерфейса (по имени подключения, по производителю сетевухи и т.д.)
|
с последовательностью интерфейсов можно померитца...
я вот немогу понять своей проблемы... на всех компах где я пробовал нормально пашет... именно на моем не хочет :((( Цитата:
ЗЫ сорри за не оперативность :( |
Цитата:
Код:
For /F "Delims=" %%i In ('WMIC /?') Do @Echo.%%i Код:
For /F "Delims=" %%i In ('WMIC NICCONFIG Get IPAddress') Do @Echo.%%i |
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001. c:\bat>1.cmd c:\bat>For /F "Delims=" %i In ('WMIC /?') Do @Echo.%i "WMIC /?" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. c:\bat>2.cmd c:\bat>For /F "Delims=" %i In ('WMIC NICCONFIG Get IPAddress') Do @Echo.%i "WMIC NICCONFIG Get IPAddress" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. c:\bat> |
WildVic, далее:
Код:
For /F "Delims=" %%i In ('Set PATH') Do @Echo.%%i |
c:\bat>For /F "Delims=" %i In ('Set PATH') Do @Echo.%i
"Set PATH" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. |
WildVic, да... чет у тебя FOR совсем не работает:
Код:
For /F "Delims=" %%i In ("Set PATH") Do @Echo.%%i Код:
For /F "UseBackQ Delims=" %%i In (`Set`) Do @Echo.%%i |
О_о уже коечто
c:\bat>1.cmd c:\bat>For /F "Delims=" %i In ("Set PATH") Do @Echo.%i Set PATH c:\bat>1.cmd c:\bat>For /F "UseBackQ Delims=" %i In (`Set`) Do @Echo.%i "Set" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. |
amel27, может у него каким-то боком отключена расширенная обработка команд? WildVic, выложите сюда результат выполнения:
Код:
set comspec Код:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor Код:
HKEY_CURRENT_USER\Software\Microsoft\Command Processor |
...и проверить на всякий случай переменную PATH:
Ошибка - [решено] 'ping' is not recognized as an internal or external command... Код:
For /F "Delims=" %%i In ('C:\WINDOWS\System32\FindStr') Do @Echo.%%i Цитата:
|
Все народ!
батник заработал! был бок в comspec стоял другой командный процессор :) ВСЕМ огромное спасибо! |
Цитата:
|
Народ, все таки я так и не довел свой батник до поставленной задачи :(
помогите плиз добить... задача такая: в зависимости от разных групп IP подключать им разные шары. умом понимаю как это делать, но на практике ничего неполучаетца :( использовал для примера 2 скрипт с 1 старицы, видно не хватает опыта :( повторюсь, нужно задать переменными разные шары, и потом использовать их при подключении в разных группах IP, например: Set $sh1= \\server\Share1 Set $sh2= \\server\Share2 Set $sh3= \\server\Share3 Set $g1=192.168.0.1 192.168.0.2 192.168.0.3 Set $g2=192.168.1.1 192.168.1.2 192.168.1.3 как подключить группе G1 шару sh1 как подключить группе G2 шару sh2 и + еще ВСЕМ IP шару sh3 |
Цитата:
Код:
@Echo Off |
Спасибо!
И еще вопросик :) как проверить из батника подключена уже шара или нет? :) |
Цитата:
Код:
If Exist X: Echo Шара X: успешно подключена |
Спасибо ОГРОМНОЕ!!!
|
Добрый день!
А если стоит задача клиентам с IP из определенной подсети подключать определенные шары. Т.е. не просто сравнивать текущий IP, а сравнивать IP подсети с заданными. Например, IP адреса машин 192.168.1.6 маска 255.255.255.0 подсеть 192.168.1.0 192.168.250.8 маска 255.255.255.0 подсеть 192.168.250.0 10.72.81.156 маска 255.255.255.128 подсеть 10.72.81.128 И клиентам из каждой подсети мапить разные шары. как модифицировать команду извлечения IP, чтобы вытащить адрес подсети? Или, хотя бы, первые три октета IP (хотя в случае с третьим примером этот метод не сработает)? |
Цитата:
|
А все-таки, интереса ради - можно ли командой вытащить адрес подсети с маской?
например, ситуация: есть сеть 192.168.1.0 255.255.255.128 и сеть 192.168.1.128 255.255.255.128 при этом наша команда ("Set $IP=%%~ni.0") заменит на 0 последний октет адреса, и адреса из обеих подсетей получатся одинаковыми. Соответственно и шары им присвоятся одинаковые. Как думаете, сложно реализовать механизм определения адреса подсети из вывода 'WMIC NICCONFIG Where IPEnabled^=TRUE Get IPAddress /Value' ? для удобства и наглядности, я думаю, будет удобнее адрес подсети вытаскивать в виде ххх.ххх.ххх.ххх/уу, хотя не принципиально. |
Цитата:
Код:
@Echo Off |
Спасибо большое за ответ!
Есть небольшая заминка - последний код выдает результат Код:
Subnet Address: / |
Цитата:
Код:
WMIC NICCONFIG Where IPEnabled=TRUE Get IPSubnet /Value Код:
@Echo Off |
Вот, что выдает первая команда:
Код:
WMIC NICCONFIG Where IPEnabled=TRUE Get IPSubnet /Value т.к. результат исполнения(вывода на экран) батника - нулевой. решил так: Код:
@Echo Off |
Loverman310, непустое значение может быть и не первым в списке, может так попробовать?
Код:
@Echo Off |
Спасибо большое! Потестируем в процессе отладки скриптов)
|
Добрый вечер.
Подскажите пожалуйста как в следующем коде, который выдает ip при совпадении требуемой маски, добавить условие ИЛИ чтобы искать еще по одной маске: Код:
for /f "tokens=2 delims=:(" %%i in ('ipconfig /all ^| find "IP" ^| find "10.2.16."') do set IPAdress=%%i Код:
for /f "tokens=2 delims=:(" %%i in ('ipconfig /all ^| find "IP" ^| find "10.2.16."') do set IPAdress=%%i |
cmd нет под рукой потому проверить не могу
вместо find "10. ..." используйте findstr вроде могло бы заработать и так: Код:
...^| findstr 10.2.16. 10.4.16. можно попробовать так: Код:
...^| findstr /g:filter.txt но т.к. это IP, вероятнее всего таки проканает первый вариант, т.к. маловероятно, чтобы в строке ipconfig отфильтрованной по IP (а еще лучше по IPv4) оказалось что-то, у которого между октетами будет что-то кроме точки. |
Код:
@echo off |
Время: 04:22. |
Время: 04:22.
© OSzone.net 2001-