Как получить IP? | Крымский форум

Как получить IP?

  • Добро пожаловать на форум! Рады видеть вас здесь! Зарегистрируйтесь или Войдите в аккаунт, чтобы иметь полный доступ к площадке!
P

pedrosoft

Guest
Требуется написать bat-скрипт прописки маршрутов но при прописке в маршрутизации требуется указать IP машины на которой маршруты прописываются. Хотелось бы автоматизировать процесс но не знаю какой командой получить IP что б подставить её в скрипт

Спасибо!
 
Цитата(pedrosoft @ 16 Июля, 2008, 18:25)
какой командой получить IP

ipconfig, если речь о винде... и потом в тот же awk, чтоб на выходе получить только ip-адрес
 
да речь идет о винде

а не что то попроще что б просто в bat-скрипте вставить ну например:
route -p add 172.16.0.0 mask 255.255.0.0 "и_вот_тут_команда_для_получения_IP_машины_на_которой_запущен_скрипт"
 
Цитата(pedrosoft @ 16.07.2008, 18:01:36, 191595)
и_вот_тут_команда_для_получения_IP_машины_на_которой_запущен_скрипт

На шлюзе батничек запускать будете? И какой смысл в этом скрыт?
Или это генерация на основе текущего адреса роутера? И часто у последнего меняются адреса?
rolleyes.gif


Батником, конечно, извратиться можно, но не проще ли скрипт на JS/VBS написать?
 
Цитата(pedrosoft @ 16 Июля, 2008, 19:01)
что то попроще

Код
C:\>ipconfig | grep IP-адрес | gawk -v FS=: "{print $2}"
10.7.0.200

C:\>
 
SwD
Код
ipconfig | perl -e "join('', <>) =~ /([d.]{7,15})/; print $1"
вывод первого IP-адреса первого интерфейса, независимо от языка ОС.
 
запускаться будет на машинах клиентов. в сети нет шлюха поэтому приходится прописывать маршрут напрямую указывая ip клиента

только вот откуда на обычной виндовой машине клиента возьмется grep, perl, awk
 
pedrosoft
Ну тогда таки JScript или VBScript, завтра гляну на примерный код... Но это тоже не панацея
smile.gif

Можно еще поглядеть на команды netsh (netsh interface ip show address и т.д.)...
 
Цитата(pedrosoft @ 17 Июля, 2008, 18:53)
только вот откуда на обычной виндовой машине клиента возьмется grep, perl, awk


RSDN говорит вот что

Цитата


Можно ли написать на bat-языке серьезную программу?

Пожалуй, нет. Серьезная программа должна все-таки выглядеть серьезно. А все написанное на командном языке Windows таковым назвать можно лишь с о-о-о-чень большой натяжкой. Так что для решения более сложных задач автоматизации лучше все-таки взять что-нибудь более функциональное:

    * Perl
    * Python
    * Ruby
    * JScript / VBScript

Последние, кстати, присутствуют в Windows 2000/XP по умолчанию (с некоторыми функциональными различиями) и в целом могут считаться заменой *.bat языку. Однако сдается мне, что *.bat-файлы проживут еще очень долго.

Дай Бог, чтобы я ошибся

http://www.rsdn.ru/article/winshell/batanyca.xml
 
Цитата(SwD @ 17 Июля, 2008, 21:41)
Можно еще поглядеть на команды netsh (netsh interface ip show address и т.д.)...

Нифига.... Один лишь айпи не выводит..
 
вообщем как я понял простой скрипт на bat в винде простым способом не написать((
я и JScript, VBScript не знаю((

ну буду признателен если кто то покажет пример на этих языках. можно ещё и делфи ))
 
Цитата(pedrosoft @ 18 Июля, 2008, 23:48)
скрипт на bat в винде простым способом не написать

О да, это вы верно подметили... Потому-то и приходится изобретать варианты с awk, grep, perl
smile.gif

Но в данном случае таки можно обойтись только силами самой винды:
Код
C:\>for /F "usebackq skip=4 tokens=8" %i in ('tracert -d %COMPUTERNAME%') do @if not %i=="" @set local_ip=%i

C:\>echo %local_ip%
10.7.0.200


Намёк понятен?
smile.gif

Работает как в W2K SP4, так и WXP SP2...
 
Цитата(SwD @ 19.07.2008, 15:08:34, 192023)
Но в данном случае таки можно обойтись только силами самой винды

Снимаю шляпу
smile.gif
 
Тоже снимаю шляпу.
bye1.gif


Но все же прошить маршрут не получилось. Пробывал несколько вариантов. Может кто поможешь. Вот что требуется прошить:

route -p add 192.168.5.0 mask 255.255.255.0 IP_машины

как получить IP_машины SwD написал но как его правильно подставить в строку...
 
Цитата(pedrosoft @ 20 Июля, 2008, 15:04)
но как его правильно подставить в строку

Ну как-то так:
route -p add 192.168.5.0 mask 255.255.255.0 %local_ip%
 
Вот так вот можно:

Код
@echo off
For /F "UseBackQ skip=7 tokens=2 delims=:" %%I In ('ipconfig') Do (
route.exe -p add 192.168.5.0 mask 255.255.255.0%%I
exit /b
)
 
no.gif


ни 1 ни 2 вариант не работают

в первом если пишу pause он даже не останавливает м.б. в нем ошибка и он сам завершается
во втором похоже к переменной (или как она тут называется) %%I не присваивается ip машины
 
@echo off
For /F "UseBackQ skip=7 tokens=2 delims=:" %%I In ('ipconfig') Do (
route.exe -p add 192.168.5.0 mask 255.255.255.0%%I
exit /b
)
 
Походу глюк на форуме (или фича такая), почему то вставляются не те кавычки.
Надо заменить кавычки обрамляющие ipconfig на знак ударения (который с тильдой на одной клавише, код в таблице символов 0x60).
 
Назад
Сверху