У меня установлен ubuntu server 12.04, поэтому у меня нет графического интерфейса. Когда я выполняю команду ifconfig, я не могу найти свой внутренний IP-адрес. он говорит inet addr: 127.0.0.1.
здесь вывод ifconfig -a:
eth0 link encap:Ethernet HWaddr 00:06:4f:4a:66:f0
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth1 link encap:Ethernet HWaddr 00:16:ec:05:c8:9c
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr 127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:1800 errors:0 dropped:0 overruns:0 frame:0
Tx packets:1800 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:143896 (143.b KB) TX bytes:143896 (143.8 KB)
здесь - содержимое etc / network / interfaces:
# Сетевой интерфейс loopback auto lo iface lo inet loopback
# Основной сетевой интерфейс auto eth0 iface eth0 inet dhcp
Если кто-то может отредактировать это для меня, содержимое etc / network / interfaces должно быть на отдельных строках.
Вывод хоста askubuntu.com был:
;; время соединения истекло; никакие серверы не могут быть достигнуты.
Несколько месяцев назад я создал owncloud и webmin и использовал их в течение месяца без проблем. Я думаю, что власть ушла один день 2 месяца назад, и я никогда не возвращал сервер до вчерашнего дня. Я не сделал ничего, что повлияло бы на настройку Интернета. Поэтому я не уверен, почему он больше не работает. Что касается моей топологии сети, у меня есть сетевая плата pci-e для ПК. Линия ethernet переходит от сетевой карты к коммутатору, а затем к модему / маршрутизатору оттуда.
Это то, что я сейчас рекомендую:
Преимущество этой команды в том, что вам не нужно знать, какой интерфейс вы используете (eth0? eth1 ? или, может быть, wlan0?), вам не нужно отфильтровывать локальные адреса, адреса Docker или VPN-туннели и т. д., и вы всегда будете получать IP-адрес, который в настоящее время используется для подключения к Интернету в этот самый момент (важно, когда, например, вы подключаетесь как к ethernet, так и к Wi-Fi или через VPN и т. д.).
Это будет проверять не только то, что на некотором интерфейсе настроен правильный IP-адрес (например, при анализе вывода ifconfig), но также что у вас есть таблица маршрутизации, настроенная на ее правильное использование.
Я нашел эту идею в этом ответе Колина Андерсона.
Я использую его в этом ответе [!d6 ] в моей коллекции скриптов на GitHub, которую вы можете установить с помощью:
wget https://rawgit.com/rsp/scripts/master/internalip
chmod a+x internalip
и использовать как:
internalip
или:
internalip TARGET
[d13 ], и вы получите свой IP-адрес, который будет использоваться для подключения IP-адреса, который в настоящее время используется для подключения к Интернету . Целью по умолчанию является 8.8.8.8, которая является коллекцией моих скриптов в GitHub и хорошим значением по умолчанию для Интернета. Но если вы запустите ее с другим IP: [!d16 ]
internalip 127.2.3.4
Затем вы получите:
127.0.0.1
, потому что это ваш IP-адрес, который будет использоваться для соединения с 127.2.3.4 на интерфейсе loopback. Это полезно, когда ваша цель находится в локальной сети, VPN или другой специальной сети, и в этом случае для подключения может использоваться другой IP-адрес, чем IP-адрес по умолчанию для доступа в Интернет.
hostname -I
Это даст вам только адрес ip без дополнительной информации.
Мне кажется, стоит упомянуть, что при запуске ifconfig вместе с параметром -a отобразятся все интерфейсы, или интерфейс не имеет IP-адреса.
работает только ifconfig, будут отображаться только интерфейсы с назначенными IP-адресами.
Вот хороший трюк, который вы могли бы использовать для отображения только IP-адресов с использованием Perl.
# ifconfig | perl -nle'/dr:(\S+)/ && print $1'
192.168.1.100
127.0.0.1
Ваша сетевая карта распознается системой, поэтому ее отображение eth0 и eth1
- это быстрый способ присвоения IP вашему интерфейсу, использование действительных IP / Соответственно подсеть.
ifconfig eth0 192.168.1.200/24 up
, то нам нужно добавить маршрут по умолчанию
route add default gw 192.168.1.1
Best,
Эта команда покажет все IP-адреса для одного устройства:
dev=eth0
ip addr show $dev | awk '/inet/ {print $2}' | cut -d/ -f1
Он напечатает одну или две строки вывода. Первый - это адрес inet / IPv4, а другой - inet6 / IPv6, если ваша система настроена для поддержки этого.
В случае, если команда ifconfig не отображает IP-адрес, существует простой и простой способ узнать IP-адрес машины Ubuntu через графический интерфейс пользователя. Выполните следующие действия:
Нажмите значок сети в области уведомлений и выберите «Информация о подключении».
Это вызывает окно с некоторой информацией, включая IP-адрес.
Здесь есть много хороших ответов, но я подумал, что я бы указал на факта, который обычно, но не обязательно используется с марионеткой для сбора различных фактов о системе. Главное преимущество фактера заключается в том, что он дает хороший чистый результат, который избавляет вас от всех манипуляций с grep, sed, awk, cut, perl и т. Д. Он не скажет вам, какие интерфейс, который вам интересен, но если вы это знаете, то следующее дает вам IP-адрес без использования других трещин:
facter ipaddress_eth0
Вот вариант ip addr.
ip имеет параметр -o, который позволяет помещать всю информацию в одну строку - это полезно для синтаксического анализа с помощью таких инструментов, как awk или perl. В сочетании с опцией -4 мы будем видеть только адреса IPv4. Таким образом, вывод будет примерно таким (note - замените wlan7 на интерфейс, который вы хотите проверить):
$ ip -4 -o addr show wlan7
3: wlan7 inet 192.168.0.78/24 brd 192.168.0.255 scope global dynamic wlan7\ valid_lft 85654sec preferred_lft 85654sec
Как вы можете видеть, IP-адрес - 4-й столбец / слово на выходе. Остальное - это просто упражнение по синтаксическому анализу с помощью инструмента по вашему выбору. Здесь я использую python:
ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]"
То же самое, только здесь string <<< и подстановка команды $()
python -c "import sys;print sys.stdin.readlines()[0].split()[3]" <<< $(ip -4 -o addr show wlan7)
Лично я сохранил это
wlan_ip() {
ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]"
}
Версия Perl и Ruby немного короче:
$ ip -4 -o addr show wlan7 | perl -lane 'print $F[3]'
192.168.0.78/24
$ ip -4 -o addr show wlan7 | ruby -n -e 'print $_.split()[3]'
192.168.0.78/24