Получение собственного IP
Spoiler 12 сентября, 2010 - 11:15
Существует ли способ получить собств. IP, выданнный через DHCP, одной командой (без парсинга вывода ifconfig)? И как получить адрес шлюза - ifconfig его не показывает, тут и парсить нечего даже...
»
- Для комментирования войдите или зарегистрируйтесь
/var/lib/dhcp/dhcp.leases
/var/lib/dhcp/dhcp.leases
Also, use dbus binding for you DHCP client
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Парсить всё равно хоть что то
Парсить всё равно хоть что то да придётся. Но можно построить конвейер и делать это "одной командой" :)
GateWay
Как практически может выглядеть конвеер для получения адреса шлюза?
Мы тоже не всего читали Шнитке!.. © В. Вишневский
:)
Вроде парсить вывод ifconfig все таки удобней...
ну и по аналогии
Agressor написал(а): парсить
Удобней/не удобней - не в этом дело, шлюз-то ifconfig не показыват :(
Это бродкаст, он не нужен
А это IP, с ним всё понятно...
Мы тоже не всего читали Шнитке!.. © В. Вишневский
Spoiler
Как это не показывает?
А почему тогда у меня это шлюз? У нас разный ifconfig?
А... потому что у меня эти операции делаються на ppp интерфейсе, и там P-t-P == Gateway
Тогда так
В чем проблема так?
Tnx!
Так нормуль. Хотя мне кажется достаточно странной ситуация, что нет для этого системных средств (ну, скажем, в составе какого-нить неттуулз, нетутилз или ещё там чего). Впрочем, это уже лирика, а стал быть оффтоп. Спасибо!
Мы тоже не всего читали Шнитке!.. © В. Вишневский
Что за трехэтажный мат ip
Что за трехэтажный мат
Не грусти, товарищ! Всё хорошо, beautiful good!
одноэтажный мат :)
Ну, или так
ip r | awk '/default/{print $3}'
А вот подскажите, pls, как модифицировать конвеер, чтоб мой IP получался без младшего октета (т.е. x.x.x. вместо x.x.x.x)?Мы тоже не всего читали Шнитке!.. © В. Вишневский
Зачем?
Зачем?
Не грусти, товарищ! Всё хорошо, beautiful good!
winterheart
Чтобы удалять паразитный маршрут, получаемый по DHCP, который представляет из себя подсеть x.x.x.0/24. Так что, если с конвеера будет приходить x.x.x., мне останется лишь сконструировать команду, удаляющую данную запись из таблицы маршрутизации
P.S. А почему вы спрашиваете, что от этого зависит?
Мы тоже не всего читали Шнитке!.. © В. Вишневский
:)
Наверное потому что все это делается на Linux, а в нем как известно одну задачу зачастую можно выполнить несколькими способами,
котрые могут быть как сложными, так и простыми (оптимальными/неоптимальными).
А если будет известно что хотите получить в конечном результате - то возможно вам предложат самое оптимальное решение вашей задачи,
а не будут играть в угадайки.
Spoiler написал(а): _Andrey
Например так
Или так
Наверняка если напрячь моск то можно и что нибудь менее угловатое придумать, просто как то лениво, при том, что и этого достаточно :)
Upd: Ой :) я и не заметил, что всё уже до меня напридумывали :) Автору: если проблема решена - поставь галочку :) ( [SOLVED] в заголовке)
_Andrey написал(а): route |
В этом варианте выдаётся не IP, а доменное имя
Мы тоже не всего читали Шнитке!.. © В. Вишневский
Ой, простите пожалста :)
Ой, простите пожалста :) действительно не учел этот момент - у меня default gateway не имеет доменного имени, потому и показывает ip адрес. Вот так должно быть гуд
P.S. А второй вариант не подходит? Он по максимуму позволяет избежать всяких подобных нюансов, связанных с разными "сетевыми обстоятельствами". Кстати вот товарищ winterheartпредложил вариант куда лучше моего :)
Кстати, вот еще
echo, "``" и "." можно и убрать - оно надо только чтобы эту самую точку дописать в конце :)
Tnx! Для удаления паразитного
Tnx! Для удаления паразитного маршрута составил такую команду:
route del -net `ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -d ':' -f 2 | cut -d '.' -f 1-3`.0 netmask 255.255.255.0 dev eth0
, вот только оно как-то, ммм..., не эстетично что-ли - создаётся впечатление какой-то избыточности... Можно ли это упростить/оптимизировать?Мы тоже не всего читали Шнитке!.. © В. Вишневский
Каждый раз такое писать
Каждый раз такое писать неудобно, согласен, так запихните это в скрипт и дёргайте хоть одной буковкой - всё зависит от того как назовёте
ppp при установлении
ppp при установлении соединения запускает /etc/ppp/ip-up, которому передается удаленный ip
?
Кхм... Скажем так, передаётся не только удаленный ip (всего 6 параметров), вот только при чём здесь вообще PPP?!?
Мы тоже не всего читали Шнитке!.. © В. Вишневский
Spoiler,
а можете показать вывод команды
ip -4 r s dev eth0
с выделениемпаразитного маршрута?
ip -4 r s dev eth0
ip -4 r s dev eth0 :
88.147.128.127 scope link metric 2 95.84.22.0/24 proto kernel scope link src 95.84.22.154 metric 2 default via 88.147.128.127 metric 2
route -n :
88.147.128.127 0.0.0.0 255.255.255.255 UH 2 0 0 eth0 95.84.22.0 0.0.0.0 255.255.255.0 U 2 0 0 eth0 127.0.0.0 127.0.0.1 255.0.0.0 UG 0 0 0 lo 0.0.0.0 88.147.128.127 0.0.0.0 UG 2 0 0 eth0
После выполнения моей команды
route del -net `ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -d ':' -f 2 | cut -d '.' -f 1-3`.0 netmask 255.255.255.0 dev eth0
, в выводе route -n данный маршрут исчезает, а вот ip -4 r s dev eth0 показывает, что ничего не измененилось. И ещё - подскажите, pls, почему команда выполняется только "вручную", а из ф-ции postup() (в /etc/conf.d/net) не работает?Мы тоже не всего читали Шнитке!.. © В. Вишневский
Я лично вписываю полный путь
Типа:
Не серчайте на ошибки, которые могут быть - у мя вывод команды несколько отличается от Вашего.
willy написал(а): Я лично
Если вы намекаете на уровень привилегий (когда-то, разбираясь с настройкой VPN, наткнулся на это - в скриптах типа ip-up действительно требовалось указывать полный путь, или экспортировать набор путей), но в /etc/init.d/net этого вроде бы не требуется - в других конфигурациях сети у меня всё выполняется без полных путей
Мы тоже не всего читали Шнитке!.. © В. Вишневский
Посмотрел сетевой обмен через
Посмотрел сетевой обмен через wireshark, и кажется, понял, почему route и ip показывали по-разному - они просто запускались в разное время, и dhcpcd в этом промежутке успевал восстановить удалённое мною. Тогда другой вопрос - а что заставляет dhcpcd так часто обращаться к серверу? Не связанно ли это с неполучением от сервера параметров ipv6?
Мы тоже не всего читали Шнитке!.. © В. Вишневский
Нет, не на привилегии.
В
man runscript
есть подсекцияВероятнее всего - вся соль в этих переменных.
dhcpcd
Спасибо за ваши быстрые ответы, но наши с вами посты наложились, и вы, скорее всего, не обратили внимания на странное поведение клиента DHCP, описанное мною постом выше. Сервером DHCP является DSL-модем, а в dhcpcd.conf есть строчка
require dhcp_server_identifier
- не оно ли воду мутит так, что клиент через каждый десяток секунд дёргает сервер?P.S. А команда из /etc/conf.d/net всё же выполнялась, просто dhcpcd быстренько это дело восстанавливал...
Мы тоже не всего читали Шнитке!.. © В. Вишневский