在 Linux 中将主机名添加到 /etc/hosts
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/5144738/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Adding host name to /etc/hosts in Linux
提问by M99
Question: Is there an easy way to add DHCP issued IP address and Hostname of a linux machine in /etc/hosts at System startup automatically?
问题:有没有一种简单的方法可以在系统启动时自动在 /etc/hosts 中添加 DHCP 发布的 IP 地址和 Linux 机器的主机名?
Background: My Linux machine has a hostname in /etc/hostname and it won't resolve to anything when I ping. I manually added my hostname and ip address in /etc/hosts for one my network related java programs to work.
背景:我的 Linux 机器在 /etc/hostname 中有一个主机名,当我 ping 时它不会解析为任何内容。我在 /etc/hosts 中手动添加了我的主机名和 IP 地址,以便我的网络相关 java 程序正常工作。
Thanks,
谢谢,
采纳答案by Marc B
dhcpcd has a -c/--script
option to run an external script anytime it configures or brings up an interface. You can use this to manually update the hosts file with the configured hostname.
dhcpcd 可以-c/--script
选择在配置或调出界面时随时运行外部脚本。您可以使用它来手动更新带有配置的主机名的主机文件。
回答by Diego Torres Milano
回答by Markus Pscheidt
In Ubuntu, add an executable file into the /etc/network/if-up.d
directory. Files in this directory get executed after the network manager configures a network interface.
在 Ubuntu 中,将一个可执行文件添加到/etc/network/if-up.d
目录中。此目录中的文件在网络管理员配置网络接口后执行。
You may adapt the following script :
您可以修改以下脚本:
#!/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 }')
echo "$ipaddr $myHostName" >>/etc/hosts
回答by nomadic_squirrel
I took what @Markus did and put it into a normal script. This works on my Fedora 20 box:
我拿了@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/ && != "127.0.0.1" {print }')
echo "$IPADDR $MYHOST" >>/etc/hosts
echo "ip: " $IPADDR
echo "final: "
cat /etc/hosts
This does have to be run as root, and probably should go in an init.d folder.
这确实必须以 root 身份运行,并且可能应该放在 init.d 文件夹中。
回答by deepujain
From
从
ipaddr=$(ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print }')
host=`hostname`
fhost=`hostname -f`
echo "$ipaddr $fhost $host" >> /etc/hosts
cat /etc/hosts
回答by Tsioneb
I personally use this script to set my hostname (existing one) + dynamic IP to /etc/hosts
file :
我个人使用此脚本将我的主机名(现有的)+ 动态 IP 设置为/etc/hosts
文件:
#!/bin/bash
ipaddr=$(/sbin/ifconfig eth0| grep 'inet addr' | cut -d: -f2 | awk '{print }')
hn=$(hostname)
hnd=$(hostname -f)
sed -i '2s/.*/'$ipaddr' '$hnd' '$hn'/' /etc/hosts
Kind regards,
亲切的问候,