Определить ip адрес компьютера в локальной сети (Bash скрипт, Linux)
Также можно написать небольшой скрипт на bash, который будет без труда справляться с поставленной задачей. Написание данного скрипта и будет рассмотрено в рамках данной статьи.

Создадим файл, который будет называться ipsearch при помощи любимого текстового редактора
Поместим туда следующее содержимое
#!/bin/bash for i in 192.168.1. do if ping -c1 -w1 $i &>/dev/null then echo $i is up; exit fi done
Разберем структуру BASH скрипта позволяющего определить ip адрес компьютера в локальной сети
Как и для любого скрипта, написанного под Linux в первой строке указывается sha-bang #, затем восклицательный знак и название командного интерпретатора
В основе скрипта цикл for — переменной i последовательно присваивается значение IP-адресов из заданного диапазона.
Для каждого из них выполняется последовательность действий описанная правилом if-then — в данном случае адрес просто пингуется, результат выполнения команды при этом перенаправляется в /dev/null. Если пинг есть (адрес доступен) в консоль выводится строка
[IP-адрес] is up
Завершается if при командой fi. exit обеспечивает выход из программы после завершения цикла for. Если exit не использовать после того как будет произведена попытка пропинговать все адреса из заданного диапазона потребуется нажать на клавиатуре сочетание клавиш CTRL+Z.
Добавляем права на исполнение файлу
Выполняем из консоли
Поскольку точкой в командной строке Linux обозначается текущая директория — указывая ./ мы задаем полный путь до исполняемого файла. Именно поэтому скрипт выполняется несмотря на то, что путь до него не прописан в переменной $PATH (она будет рассмотрена в одной из следующих статей).
То же самое, что делает написанный скрипт можно успешно выполнять при помощи однострочного скрипта
for i in 192.168.1.;do if ping -c1 -w1 $i &>/dev/null;then echo $i is up;fi;done
Однако скриптом пользоваться, в большинстве случаев, оказывается более удобно
Как узнать внешний IP адрес в Linux?
Узнать внешний IP адрес в Linux можно разными способами. Можно к примеру зайти на специальные сайты, которые определяют ваш собственный внешний IP-адрес, но можно это сделать и по другому. Сегодня я расскажу как узнать внешний IP-адрес в Linux используя терминал.
А в этой статье мы рассказывали как узнать IP-адрес собеседника, его операционную систему, браузер и другую важную информацию.
Что такое IP?
Вкратце о том что такое IP-адрес. Каждый компьютер смартфон, планшет или любое другое устройство которое подключается к сети интернет, имеет свой личный идентификатор. Этот идентификатор называется IP-адрес.
IP-адреса бывают разные:
Внутренний (локальный) IP — это IP-адрес, который выдается компьютеру в пределах внутренней локальной сети. Такой адрес не используется для выхода в сеть.
Внешний IP-адрес вы получаете от вашего провайдера. Он может быть статическим и динамическим (меняется каждый раз когда вы подключаетесь к сети).
Если вы еще не знаете как узнать IP и MAC-адрес на вашем Android — устройстве. Могу порекомендовать статью получение IP адреса Андроид.
Как узнать внешний IP адрес в Linux?
Первым делом необходимо установить специальную утилиту Curl (Client URL). Для этого необходимо выполнить команду. Делается это так:
Для Ubuntu и других дистрибутивов на Debian:
unixforum.org
BASH. Как узнать IP адрес сетевого интерфейса?
На самом деле это единственный раздел про unix на этом форуме
18 сообщений • Страница 1 из 1
Hemp Сообщения: 17 ОС: Debian
BASH. Как узнать IP адрес сетевого интерфейса?
Сообщение Hemp » 03.06.2010 11:35
Собственно, необходимо занести в переменную IP адрес сетевого интерфейса eth0, который выдаётся динамически.
Как это можно реализовать?
Языком сценариев Bash, практически не владею (на уровне echo»Hello»), но вижу, это примерно, так:
1. Копирую в файл вывод команды ifconfig eth0
2. В цикле, посимвольно перебираю этот временный файл.
3. Найдя, строчку «inet addr:», отсчитываю 15 символов (XXX.XXX.XXX.XXX), которые составляют сам IP адрес
4. Заношу, эти 15 символов, в переменную.
5. Удаляю, временный файл.
Как определить ip через bash скрипт?
Как мне сделать так, чтобы я мог в скрипте написать например $ip и чтобы в конфиги прописался ip сервера в терминале которого был запущен скрипт. Такого плана хочу сделать:
echo «host $ip» > /etc/rclocal
- Вопрос задан более трёх лет назад
- 11909 просмотров
Комментировать
Решения вопроса 1
Saboteur @saboteur_kiev Куратор тега Linux
software engineer
У сервера может быть несколько IP адресов, несколько интерфейсов, и работать они могут с разными маршрутами.
Вы что именно хотите?
ifconfig пропарсить? или ip addr show?
Если внешний интерфейс один, то подойдет обычный
hostname -I
Ответ написан более трёх лет назад
Комментировать
Нравится 5 Комментировать
Ответы на вопрос 3

Программист
Если известно наименование интерфейса, то можно попробовать так
#!/bin/bash IP=$(ifconfig eth0 | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '< print $1>') echo "My IP is $IP"
Опять же, это будет адекватно работать если интерфейс один (исключая lo), если таких интерфейсов несколько, то нужно что-то по серьезнее писать.
Ответ написан более трёх лет назад
Нравится 1 3 комментария
noob4ik2 @noob4ik2 Автор вопроса
Спасибо большое. А если будет не eth0 (такое вряд ли будет, это я на будущее интересуюсь) Быть может есть какая-нибудь программа для определения? Чтобы я скриптом её поставил а потом одной командой определял ип. У меня всегда не больше 1 ип если что. Или например сразу несколько интерфейсов вбить

noob4ik2, Если уверены что интерфейс один, то указывать имя интерфейса не обязательно в скрипте
noob4ik2 @noob4ik2 Автор вопроса
Евгений, я на будущее интересуюсь) Быть может когда-то буду не уверен.

Внимание! Изменился адрес почты!
В самом наипростейшем случае, когда одна сетевуха, никаких наворотов — сначала netstat -in, чтобы получить список интерфейсов и их имен и откинуть lo0, а потом ifconfig по тому интерфейсу, который остался.
Но это наипростейший случай. Даже у компа с одной сетевухой может быть например виртуальная машина и мост, который обьединяет уже как минимум два интерефейса:
# netstat -in Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg br0 1500 850276 0 9811 0 138039 0 0 0 BMPRU eth0 1500 859789 0 1739 0 138070 0 0 0 BMRU lo 65536 3749 0 0 0 3749 0 0 0 LRU
Какой вот тут взяли бы? 🙂
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
выполни код:
icanhazip=`wget -q -4 -O- http://icanhazip.com`
теперь в переменной $icanhazip находится твой внешний IP
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Linux
- +2 ещё
Есть утилита для мониторинга UPS?
- 2 подписчика
- 5 часов назад
- 92 просмотра