@noob4ik2

Как определить ip через bash скрипт?

Всем привет, подскажите как определить ip в bash? Например есть такая утилита pwgen и в скрипте я могу указать примерно такое mysql -uroot -p$pass_pwgen

Как мне сделать так, чтобы я мог в скрипте написать например $ip и чтобы в конфиги прописался ip сервера в терминале которого был запущен скрипт. Такого плана хочу сделать:

echo "host $ip" > /etc/rclocal
  • Вопрос задан
  • 12158 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
У сервера может быть несколько IP адресов, несколько интерфейсов, и работать они могут с разными маршрутами.
Вы что именно хотите?
ifconfig пропарсить? или ip addr show?

Если внешний интерфейс один, то подойдет обычный
hostname -I
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
zolt85
@zolt85
Программист
Если известно наименование интерфейса, то можно попробовать так
#!/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), если таких интерфейсов несколько, то нужно что-то по серьезнее писать.
Ответ написан
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
В самом наипростейшем случае, когда одна сетевуха, никаких наворотов - сначала 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

Какой вот тут взяли бы? :)
Ответ написан
Комментировать
@Maxim_Q
выполни код:
icanhazip=`wget -q -4 -O- http://icanhazip.com`
теперь в переменной $icanhazip находится твой внешний IP
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы