linux机器有多IP的情况,而有时候获取ip就会获取错误。
目前在网络上所找到的几乎所有直接通过java代码获取ip的方法都是有问题的,不能获取想要获得的那个IP。
怎么办呢,目前只能想办法写一个python脚本,然后把获取的ip输入到文件里面,最后java从文件里面读取。
鉴于项目中所有的服务器都会部署一个flume程序,该程序会与远程机器通信,那么就获取该程序的通信状况
netstat -anp |grep 12345 |grep -i established
flume程序占用的端口就是12345。
那么就过滤除了12345这个端口的以外通信信息。
import os
flag=False
while(True):
val= os.popen('netstat -anp |grep 12345 |grep -i established')
for temp in val.readlines():
if(len(temp.split())>3):
ipPort=temp.split()[3]
if ':' in ipPort:
ip=ipPort.split(':')[0]
with open("machineIp.txt","w") as f:
f.write(ip)
flag=True
break
if(flag==True):
break
这个就将获得的真实机器IP给输出出来了。