PDA

Просмотр полной версии : help, аналог grep в винде


Elekt
12.04.2007, 17:42
собственно, ситуация такая:

есть локальная сеть с подсетями

есть роутер, чтоб связь была и не глючила

пользователи один раз запукают routing.bat c содержимым:

route add 192.168.0.0 mask 255.255.0.0 servername -p

и до перестановки винды живут счастливо...



Проблема:

Теперь требутся, чтобы пользователь, находящийся в первой подсети прописал у себя только

route add 192.168.0.0 mask 255.255.0.0 192.168.1.1 -p

во второй только:

route add 192.168.0.0 mask 255.255.0.0 192.168.2.1 -p

в третьей только:

route add 192.168.0.0 mask 255.255.0.0 192.168.3.1 -p

и так далее.

Требуется написать бат скриптик, который бы определял текущую подсеть юзверя и выдавал ему соответствующую подсеть роутинга.

тоесть нужно каким то макаром выдрать подсеть через ipconfig или net и исходя из этого производить верную прописку.

как это сделать в виндовой консоли - я теряюсь.
с меня плюсы.

iv.
12.04.2007, 17:49
нашел непосредственно только аналог grep - findstr.exe, лежит в system32. дальше думать лень =(

Thanat0z
12.04.2007, 18:41
решение, мягко говоря через жопу, не проще ли один раз настроить? или всем обьяснить чтоб руками сделали?

я вижу только 2 варианта, и то, требующее доработки, первый что-то типа

C:\>REGEDIT /E c:\filename.REG HKEY_LOCAL_MACHINE\SYSTEM\...

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

Или как уже рекомендовали
ipconfig | findstr "Gateway"
в обоих случаях айпишник надо каким-то образом еще выдрать

andy13
12.04.2007, 19:22
help, аналог grep в винде
есть порт grep под windows.
скачать можно тут:
http://www.weihenstephan.de/~syring/win32/

зы плюсы мне не нужны!

Thanat0z
12.04.2007, 19:27
а зачем каждый раз скриптик запускать?
достаточно один раз выполнить (если мне не изменяет память - ключ -p, я под никсами сижу):
route -p add ...
и после перезагрузки маршрут сохранится. Аналог grep в винде тоже есть, его можно найти в составе gnu win32 utils - Гугль в помощь. Но что-то подсказывает мне что есть решения проще, чем grep.

UPD: сорри, элект ключик -p не забыл, это я не заметил.

дело в том, как я понял, что ему нужно сделать стандартными средствами. Мне допустим всегда пофиг, мне легче поставить Цигвин и не мучаться, а тут видимо поставить на десяток или сотни машинок греп проблематично

flipper
12.04.2007, 21:13
Наверно что то вроде этого:

echo off
ipconfig >22.txt
for /F "skip=9 tokens=2* usebackq delims=:" %%i IN (22.txt) DO set IP=%%i
route add 192.168.0.0 mask 255.255.0.0 %IP% -p
echo %IP%

Elekt
13.04.2007, 11:39
о, да!

echo off
ipconfig | findstr "192.168.*.1" > ipconfig.txt
for /F "skip=2 tokens=2* delims=:" %%i IN (ipconfig.txt) DO set IP=%%i
route add 192.168.0.0 mask 255.255.0.0 %IP% -p
echo %IP%

всем спасибо! =)

+++++++++++

flipper
13.04.2007, 13:21
еще навено полезнее будет
echo %IP%
заменить на: del ipconfig.txt

Thanat0z
13.04.2007, 15:58
show-ip-reg.bat

@echo off
for /f "usebackq tokens=1-3" %%A in (`"reg query HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Param eters\Interfaces\{KEY} /v dhcpdefaultgateway|findstr /i dhcpdefaultgateway"`) do (for /f "usebackq delims=\ tokens=1-3" %%F in ('%%C') do (echo %%F))