问题:有没有一种简单的方法可以在系统启动时自动在/ etc / hosts中添加一个linux机器的DHCP发布的IP地址和主机名?
背景:我的Linux机器在/ etc / hostname中有一个主机名,当我ping时它不会parsing任何东西。 我手动添加我的主机名和IP地址在/ etc / hosts为我的networking相关的Java程序工作。
谢谢,
我怎样才能阻止访问某些网站,直到重新启动,无需更改主机文件?
在Windows上的networking控制
如何在Linux中获得所有TCP连接的min / avg / var rtt?
networking应用程序有多less个传入缓冲区?
Netcat反向shell
检测接口是否处于与C的混杂模式
如何获得Windows平台上的进程发送或接收的数据量?
Windows 7:嗅探到本地主机的TCP套接字
pingnetworking范围并返回响应主机的最快方法?
给定TCP / IP校验和的HTTP 1.1 Content-MD5冗余?
dhcpcd有一个-c/--script选项,用于在配置或启动接口时运行外部脚本。 您可以使用此手动更新具有配置主机名的主机文件。
在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
使用avahi (应该在你的发行版),然后你可以
$ ping youhostname.local
我把@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文件夹中。
从
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
我个人使用这个脚本来设置我的主机名(现有的)+动态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
亲切的问候,
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。