python shell 根据 ip 获取 hostname

发布时间:2019-06-12 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了python shell 根据 ip 获取 hostname脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

python shell 根据 ip 获取 hostname 或根据 hostname 获取 ip

前言

笔者有时候需要根据hostname获取ip
比如根据machine.company.com 获得ip 10.173.14.117

本文地址 http://blog.csdn.net/never_cxb/article/details/47831

方法1:利用 socket 模块 里的 gethostbyname 函数

代码如下,使用socket模块

>>> import socket
>>> socket.gethostbyname("www.baidu.com")
'61.135.169.125'
>>> socket.gethostbyname("rs.xidian.edu.cn")
'202.117.119.1'

方法2 利用 shell 中 hostname 命令

疑惑:

有时候socket不太稳定,有时候无法获取到 ip 具体原因带查明。

笔者自己想的一个方法,不是很优雅,比较繁琐,不过倒是很健壮。

主要思想是在另一台机器上把 hostname 信息写到文件里,然后把文件拷到本机器上,读取文件里的 hostname 信息。

  • 利用 plink 在远程ip机器上执行hostname > %s.hostname命令,将hostname 信息输出到文件

  • 然后利用本地的 pscp 将远程机器上带有hostname的文本文件/root/%s.hostname 复制到本地

  • 利用 python 的文本读取功能读取信息,从中取出hostname字符串

  • 收尾工作:利用rm命令把远程机器和本地的文本文件都删除

代码如下:

def getHostName(ip):
    command = 'java -jar %s %s "hostname > %s.hostname"' %(remoteCmdLoca,ip,ip)
    result = subprocess.call(command,shell=True)
    command = '%s -q -r -pw passwd %s [email protected]%s:/root' % (pscpLoca,pscpLoca,shell=True)
    command = '%s -q -r -pw passwd [email protected]%s:/root/%s.hostname %s' %(pscpLoca,fileDir)
    result = subprocess.call(command,shell=True)
    fileName = fileDir + ip + '.hostname'
    readFile = open(fileName,'r')
    hostnameInfo =  str(readFile.readline().strip('\n'))
    readFile.close()
    subprocess.call('rm '+ fileName,shell=True)
    print "=========%s hostname is %s========" %(ip,hostnameInfo)
    return hostnameInfo

总结

以上是脚本之家为你收集整理的python shell 根据 ip 获取 hostname全部内容,希望文章能够帮你解决python shell 根据 ip 获取 hostname所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。
标签: