Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1905733
  • 博文数量: 219
  • 博客积分: 8963
  • 博客等级: 中将
  • 技术积分: 2125
  • 用 户 组: 普通用户
  • 注册时间: 2005-10-19 12:48
个人简介

文章分类

全部博文(219)

文章存档

2021年(1)

2020年(3)

2015年(4)

2014年(5)

2012年(7)

2011年(37)

2010年(40)

2009年(22)

2008年(17)

2007年(48)

2006年(31)

2005年(4)

分类: Java

2007-12-14 13:50:57

    测试组报上来一个 BUG,说页面 SNMP 采集页面显示不出来,提示检查后台程序是否启动。但不是所有机器都会报这个错误,只有这台机器报。环境是 fedora 6。
    查了一下代码,没有问题。要问题机的命令行下输入 snmpget .... localhost 命令也没有问题,可以取到数据,那问题出在哪儿呢?
    代码中在决定到哪个 IP 地址 GET 数据的方法里面用了 InetAddress.getLocalHost().getHostAddress() 取的本地 IP,难道是它有问题。于是把取得的 IP 地址打了出来,是 66.xx.xx.xx 的 IP,但实际本机 IP 是 192.168.11.185,怎么可能呢?难道是这个方法不会区分哪个 IP 才是真实 IP (这台机器有多个 IP 地址,有虚通道IP),用 ifconfig 命令查也没有这个 66 网段的IP呀!于是 PING 这个 66 网段的 IP 地址,还能 ping 通!又 ping 了一下本机的主机名(hostname),结果 PING 到了 66 这个 IP 上!嗯,问题有了结论了。
    查看 /etc/hosts 文件,里面果然有一条本机名和 66.xx.xx.xx IP 对应的记录。把它注释掉,然后修改了一下本机的主机名,又在 hosts 文件中加入主机名和 127.0.0.1 的对应,问题解决了。
    原来对 InetAddress.getLocalHost().getHostAddress() 方法的实现方法不是很清楚,就知道它能找到本机 IP,原来它是依靠本机的机器名去查询的 IP 地址,和 ping `hostname` 返回的 IP 地址是同一个,并不是 ifconfig 方法得到的 eth0 IP 地址。
    这个问题我虽然是在 JAVA 中遇到的,但它在 LINUX 操作系统上排查问题方面还是有普遍意义的.
阅读(15125) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

hdc1112_cu2010-03-19 09:36:38

刚碰到这个~ 3Q