質問: dhcp上のホストの `/ etc / hosts`を維持する 私のローカルdhcpネットワークには、リモートでアクセスする必要がある別のpcがあります。問題は、彼らのipが変化することです。ラップトップとネットブックを他の人のdhcpネットワークに接続することもあります。私の現在の解決策は、ターゲットipが変更されるたびに/etc/hostsファイルを更新することです。私の/etc/hostsファイルは次のようになります:# <ip-address> <hostname.domain.org> <hostname> 127.0.0.1 localhost.localdomain localhost laptop 192.168.1.14 desktop.localdomain desktop 192.168.1.12 netbook.localdomain netbook 手動による管理をすべて回避する方法はありますか?たとえば、私のコンピューターはlan上でipをブロードキャストできますか? windowsはそのようなことを行い、「\\ computer_name」を使用してネットワーク上のコンピューターを参照できるようにします。
回答: 私はよくこれについて疑問に思い、/ etc/sysconfig/network-scripts/update-hostsで次のようなスクリプトを作成してみました:-#!/bin/sh set -e if [ "$iface" = lo ]; then exit 0 fi short_host=`hostname` # remove current line with hostname at the end of line sed -i '/'$short_host'$/ d' /etc/hosts ipaddr=$(ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}') echo "$ipaddr $short_host" >>/etc/hosts 次に、initスクリプト/etc/init.d/updatehostsを介して実行します:-#!/bin/sh # chkconfig: 2345 11 89 # description: automatically update /etc/hosts # if [ ! -x /etc/sysconfig/network-scripts/update-hosts ] then echo "update hosts: can't update hosts file" exit fi case "$1" in 'start') # update hosts: cp /etc/hosts /etc/hosts.001 /etc/sysconfig/network-scripts/update-hosts echo "/etc/hosts updated" ;; 'stop') # restore hosts: cp /etc/hosts.001 /etc/hosts echo "/etc/hosts restored" ;; esac chkconfig --add updatehostsを使用して有効化誰かがこの方法のより良い方法や改善を推奨できますか?