web-dev-qa-db-ja.com

Linuxの/ etc / hostsにホスト名を追加する

質問:システムの起動時に/ etc/hostsにLinuxマシンのDHCP発行のIPアドレスとホスト名を自動的に追加する簡単な方法はありますか?

背景:Linuxマシンの/ etc/hostnameにホスト名があり、pingを実行しても何も解決されません。ネットワーク関連のJavaプログラムが機能するように、/ etc/hostsにホスト名とIPアドレスを手動で追加しました。

ありがとう、

12
M99

dhcpcdには -c/--script インターフェースを構成または起動するたびに、外部スクリプトを実行するオプション。これを使用して、設定されたホスト名でhostsファイルを手動で更新できます。

5
Marc B

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
7
Markus Pscheidt

@Markusが行ったことを取り入れて、通常のスクリプトに入れました。これは私のFedora20ボックスで機能します。

#!/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

avahi (ディストリビューションリポジトリにあるはずです)を使用すると、次のことができます

$ ping youhostname.local
1

から

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
0
deepujain

私は個人的にこのスクリプトを使用して、ホスト名(既存のもの)+動的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
Tsioneb