Добавление имени хоста в / etc / hosts в Linux - PullRequest
12 голосов
/ 28 февраля 2011

Вопрос: Существует ли простой способ добавить выданный DHCP IP-адрес и имя хоста компьютера с Linux в / etc / hosts при автоматическом запуске системы?

Справочная информация: У моей машины Linux есть имя хоста в / etc / hostname, и оно не разрешается ни к чему, когда я пингуюсь. Я вручную добавил свое имя хоста и IP-адрес в / etc / hosts для работы моих связанных с сетью java-программ.

Спасибо

Ответы [ 6 ]

7 голосов
/ 21 июля 2011

В Ubuntu добавьте исполняемый файл в каталог /etc/network/if-up.d. Файлы в этом каталоге выполняются после того, как сетевой менеджер настроит сетевой интерфейс.

Вы можете адаптировать следующий скрипт:

#!/bin/sh

set -e

if [ "$IFACE" = lo ]; then
    exit 0
fi

myHostName=`hostname`

# Remove current line with hostname at the end of line ($ means end of line)
sed -i '/'$myHostName'$/ d' /etc/hosts

ipaddr=$(ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}')
echo "$ipaddr $myHostName" >>/etc/hosts
5 голосов
/ 28 февраля 2011

dhcpcd имеет опцию -c/--script для запуска внешнего скрипта в любое время, когда он конфигурирует или вызывает интерфейс.Вы можете использовать это, чтобы вручную обновить файл hosts с настроенным именем хоста.

1 голос
/ 14 мая 2014

Я взял то, что сделал @Markus, и поместил его в обычный скрипт. Это работает на моей коробке Fedora 20:

#!/bin/sh

MYHOST=firtree

echo "before:"
cat /etc/hosts

# Remove current line with hostname at the end of line ($ means end of line)
sed -i '/'$MYHOST'$/ d' /etc/hosts

echo "after remove: "
cat /etc/hosts

IPADDR=$(ifconfig | awk -F" +|:" '/inet addr/ && $4 != "127.0.0.1" {print $4}')
echo "$IPADDR $MYHOST" >>/etc/hosts

echo "ip: " $IPADDR
echo "final: "
cat /etc/hosts

Это должно быть запущено от имени пользователя root и, вероятно, должно находиться в папке init.d.

1 голос
/ 01 марта 2011

Используйте avahi (который должен быть в ваших репозиториях), тогда вы можете

$ ping youhostname.local
0 голосов
/ 26 февраля 2015

Я лично использую этот скрипт для установки моего имени хоста (существующего) + динамического IP на /etc/hosts файл:

#!/bin/bash
ipaddr=$(/sbin/ifconfig eth0| grep 'inet addr' | cut -d: -f2 | awk '{print $1}')
hn=$(hostname)
hnd=$(hostname -f)
sed -i '2s/.*/'$ipaddr'  '$hnd'   '$hn'/' /etc/hosts

С уважением,

0 голосов
/ 17 мая 2014

С

ipaddr=$(ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}’)
host=`hostname`
fhost=`hostname -f`

echo "$ipaddr $fhost $host" >> /etc/hosts

cat /etc/hosts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...