Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
5 / 5 / 1
Регистрация: 22.01.2012
Сообщений: 97
1

Написать батник, который определял бы мой IP-адрес и подставлял его в команду добавления маршрута

23.01.2012, 02:16. Показов 4211. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня следующая ситуация: я подключаюсь к удаленному серверу, используя ВПН-туннель. Для впн-интерфейса мне назначается динамически айпишник, но из той же сети, в которой я сижу. Из-за этого я в клиенте отключил маршруты.
Помогите, пожалуйста, написать батник, который определял бы мой айпишник и подставлял его в команду добавления маршрута (route add 192.168.1.100 %ip%)
Это возможно сделать средствами batch? Ответ ищу уже не первый день. Пока не нашел...

Добавлено через 8 часов 14 минут
В принципе кое-какой корявый батничек для себя уже накатал, но все же хотелось услышать профи. Наверняка есть какие-то наработки в этом направлении или хотя бы пожелания.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2012, 02:16
Ответы с готовыми решениями:

Написать батник, который выводит числа от 1 до 256, не используя команду FOR
Народ помогите написать батник, который выводит числа от 1 до 256, не используя команду FOR. Как?...

Батник, который пингует указанный IP-адрес и в случае отсутствия пинга запускает другой батник и закрывается
Доброго времени суток, столкнулся с проблемой ... нужен батник который будет пинговать айпишник к...

Возможно ли написать макрос который бы подставлял значения в журнал из таблиц с бригадами, по датам
Добрый день, умнейшины! Столкнулся с проблемой, которую не в силах решить, может быть кто-то сможет...

Нужно написать батник который запускает определенный файл
На вашей машине создайте исполняемый файл, который: В определенное время запускает файл который...

11
306 / 217 / 70
Регистрация: 08.11.2010
Сообщений: 1,882
25.01.2012, 18:47 2
http://technet.microsoft.com/r... S.10).aspx
0
5 / 5 / 1
Регистрация: 22.01.2012
Сообщений: 97
26.01.2012, 03:27  [ТС] 3
Даже не знаю, как на это и реагировать... Пришел, тыцнул в общем направлении и ушел, небось, довольный собой. Либо не попытавшись разобраться в сути вопроса, либо не соизволил опуститься до уровня объяснений. Неужто Вы думаете, что я не знаю команд вообще? Было бы глупо на этом форуме регистрироваться и имея общих понятий и сети или программах. Но у меня как раз проблемы с написанием батников. Я не программист, но сеть знаю хорошо. Все, что я просил от сообщества форума помощи в написании грамотного батника.
0
142 / 68 / 4
Регистрация: 23.06.2010
Сообщений: 155
26.01.2012, 19:03 4
Я бы попробовал из результата команды ipconfig с помощью команды for вытянуть IP и передать его в переменную далее для работы в том же батнике.
0
306 / 217 / 70
Регистрация: 08.11.2010
Сообщений: 1,882
26.01.2012, 19:12 5
а если использовать findstr /?
потом >text.txt
ну что-нить вроди этого?
0
5 / 5 / 1
Регистрация: 22.01.2012
Сообщений: 97
27.01.2012, 20:04  [ТС] 6
Я накорябал кое-какой батничек. Здесь приведу код, а вы как профи подскажите, что сделал не так и как можно оптимизировать, хорошо?
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
ipconfig | find "192.168.1.2" > ip.txt
call :get_ip ip.txt || exit /b 1
 
:get_ip
for /f "tokens=1,2 delims=:" %%i in (ip.txt) do (
echo %%j >> ip.log
route add 192.168.1.100 %%j
)
exit /b 0
Добавлю кое-что, чтоб было понятнее. find "192.168.1.2" использовал потому, что айпи в ВПН выдается начиная с 192.168.1.202, а в моей сети до 30, так что так я точно определю айпи ВПНа. FOR пришлось использовать, так как ipoconfig мне выдает много инфы, а оператором find я выдираю целую строку, хотя мне нужен только айпишник. Без FOR не знаю, как выделить из строки только ее конец нужную мне часть. Может можно как-то упростить? И еще, не знаю из-за чего, но иногда я вызываю этот батник и он уходит в бесконечный цикл. Как можно этого избежать?
1
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
28.01.2012, 12:20 7
Было бы глупо на этом форуме регистрироваться и имея общих понятий и сети или программах
Это ты мало тут был
Тут таких большинство

Добавлено через 2 минуты
Для впн-интерфейса мне назначается динамически айпишник, но из той же сети, в которой я сижу
Что-то мне подсказывает что работать так оно не будет
Поэтому выложи результат команд "ipconfig /all >file.txt" и "route print >file.txt"
до поднятия VPN и после поднятия VPN
C необходимыми комментариями - где твой локальный IP-ник, где твой IP-ник в VPN

Лучше в виде файлов, а не картинки с экрана

Из-за этого я в клиенте отключил маршруты.
А подробнее - какие именно и куда ?
0
5 / 5 / 1
Регистрация: 22.01.2012
Сообщений: 97
28.01.2012, 16:32  [ТС] 8
Скрипт, который я привел выше работает. Нужный мне маршрут прописывается (к серваку 192.168.1.100). Я только насчет оптимизации спрашиваю. И по поводу того, из-за чего может возникать бесконечный цикл.
ipconfig /all выдаст слишком много бесполезной в данном вопросе информации. У меня очень много интерефейсов. Для ВПН-интерфейса назначается айпишник 192.168.1.202-215. А локальный адрес в моей сети 192.168.1.2-40. Но маска выдается и там и там 255.255.255.0 то есть они из одной сети. Именно поэтому я отключаю настройках ВПН-клиента маршруты, которые сервер выдает в свою сеть. Его и моя сети по сути это одна и та же (с точки зрения маски).
0
887 / 189 / 16
Регистрация: 18.07.2011
Сообщений: 260
29.01.2012, 11:26 9
Третья строка бессмысленна.
Во первых в подпрограмму get_ip передаётся параметр равный "ip.txt", но в подпрограмме ни как не используется, т.е. если в ней написать
Bash
1
call :get_ip || exit /b 1
, то результат будет тем же.
Во вторых, две вертикали подразумевает, что возможен выход из под программы с не нулевым кодом завершения. Но благодаря строке №10, такого не будет ни когда. Т.е. можно написать просто
Bash
1
call :get_ip
В третьих, после завершения третьей строки, программа переходит к выполнению пятой строки. После второго вызова подпрограммы get_ip результат будет таким же, как после первого вызова, следовательно вместо третьей, пятой и десятой строки можно вообще ни чего не писать. Результат будет тем же.
1
5 / 5 / 1
Регистрация: 22.01.2012
Сообщений: 97
29.01.2012, 22:41  [ТС] 10
Мне пришлось делать через call, потому что я не знаю, как еще присвоить строку из файла переменной. В результате выполнения второй строки в файл ip.txt записывается одна строка, содержащая нужный мне айпишник. Пока не использовал call, не мог передать строку из файла на обработку оператору FOR. Как выкрутиться? Хотя это то, что осталось от первоначального файла... я там много правил, пока не пришел к этому рабочему варианту. Сейчас перегружусь в винду и проверю работу скрипта без 3,5 и 10 строки.

Добавлено через 5 минут
UPD. И правда строки были лишними. Без все работает так же =) Спасибо за оптимизацию.
Но остался вопрос: при каком условии батник войдет в бесконечный цикл? Я не смог отловить условия для его создания? Просто иногда это случается и помогает исключительно ребут системы, даже не логофф...
0
887 / 189 / 16
Регистрация: 18.07.2011
Сообщений: 260
30.01.2012, 20:41 11
Цитата Сообщение от AlexWCI Посмотреть сообщение
при каком условии батник войдет в бесконечный цикл?
Этот батник в зациклинование попасть не может, но может закольцевать маршруты, поэтому приходится перезагружать компьютер.
0
5 / 5 / 1
Регистрация: 22.01.2012
Сообщений: 97
31.01.2012, 14:37  [ТС] 12
Закольцевать он ничего не может, так как маршрут прописывается всего к одному узлу. А вот зацикливание я наблюдаю именно как зацикливание: работа батника не прекращается и все время вижу, как он добавляет один и тот же маршрут (route add 192.168.1.100 192.168.1.202). Хотя на самом деле такого происходить не должно, ведь после первого добавления этого маршрута система при повторном добавлении должна ответить отказом добавить существующий маршрут.
В принципе я уже давненько не видел этого самого зацикливания. Может просто какой-то глюк система словила? Пока наблюдаю =)
0
31.01.2012, 14:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.01.2012, 14:37
Помогаю со студенческими работами здесь

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

Как создать батник, который создает батник с командами?
Уже знаю, что такая тема была, но до конца не понял. Как создать батник, который создаст батник с...

Написать батник, который будет запускать Avast с определёнными параметрами и ключами
Добрый день! Идея состоит в том, чтобы написать батник, который будет заходить в папку с...

Можно ли написать батник, который будет пинговать яндекс через одну сетевую карту?
к серверу подключены 2 подсети, через 2 сетевые карты, интернет в каждой подсети свой, можно ли...

Как написать батник, который бы выполнял пинг ip- адресов из блокнота и переименовывал диалоговые окна?
Прошу подсказать как написать батник, который бы выполнял пинг ip- адресов из блокнота и...

Подскажите скрипт, который определял бы доступность интернета и выдавал бы соответствующее сообщение...
Подскажите пожалуйста скрипт на JS который определял бы доступность интернета и выдавал бы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru