Показать полную графическую версию : [решено] определение IP и подключение шары
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... (http://forum.oszone.net/post-729881.html)
For /F "Delims=" %%i In ('C:\WINDOWS\System32\FindStr') Do @Echo.%%i
может у него каким-то боком отключена расширенная обработка команд? »тогда вроде другой текст ошибки должен быть
Все народ!
батник заработал!
был бок в comspec
стоял другой командный процессор :)
ВСЕМ огромное спасибо!
...и проверить на всякий случай переменную PATH:
Точно! Я сам на этом несколько раз попадался.
Народ, все таки я так и не довел свой батник до поставленной задачи :(
помогите плиз добить...
задача такая:
в зависимости от разных групп 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
как подключить группе G1 шару sh1
как подключить группе G2 шару sh2
и + еще ВСЕМ IP шару sh3 »
@Echo Off
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
For /F "Tokens=2 Delims=={}" %%i In ('WMIC NICCONFIG Where IPEnabled^=TRUE Get IPAddress /Value') Do Set $IP=%%~i
For /F "Tokens=1,2 Delims==" %%i In ('Set $G') Do For %%a In (%%j) Do If "%$IP%"=="%%a" Call :%%i
Net Use Y: %$SH3%
Exit /B 0
:$G1
Net Use X: %$SH1%
GoTo :EOF
:$G2
Net Use X: %$SH2%
GoTo :EOF
Спасибо!
И еще вопросик :)
как проверить из батника подключена уже шара или нет? :)
как проверить из батника подключена уже шара или нет? »
If Exist X: Echo Шара X: успешно подключена
If Not Exist X: Echo Шара X: не подключена!
Loverman310
14-04-2010, 15:50
Добрый день!
А если стоит задача клиентам с 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 (хотя в случае с третьим примером этот метод не сработает)?
хотя бы, первые три октета IP »
заменить: "Set $IP=%%~i" --> "Set $IP=%%~ni.0" , тогда $IP будет равен подсети
Loverman310
15-04-2010, 09:54
А все-таки, интереса ради - можно ли командой вытащить адрес подсети с маской?
например, ситуация:
есть сеть 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' ?
для удобства и наглядности, я думаю, будет удобнее адрес подсети вытаскивать в виде ххх.ххх.ххх.ххх/уу, хотя не принципиально.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.