当前位置 主页 > 服务器问题 > win服务器问题汇总 >

    python shell根据ip获取主机名代码示例

    栏目:win服务器问题汇总 时间:2019-10-27 09:58

    这篇文章里我们主要分享了python中shell 根据 ip 获取 hostname 或根据 hostname 获取 ip的代码,具体介绍如下。

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

    方法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 root@%s:/root' % (pscpLoca, pscpLoca, ip)
      result = subprocess.call(command, shell=True)
      command = '%s -q -r -pw passwd root@%s:/root/%s.hostname %s' %(pscpLoca,ip,ip,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

    下面分享一则简单的windows下python 获取主机名的代码示例,我是win10系统,待会可以试试:

    环境:windows10 64位 + python2.7

    代码如下:

    import socket
    hostName = socket.gethostname()

    运行结果如下:

    >> import socket
    >>> hostName = socket.gethostname()
    >>> print hostName
    LAPTOP-H7MGGAAT

    总结

    以上就是本文关于python shell根据ip获取主机名代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

    python自动裁剪图像代码分享

    Python算法之图的遍历

    如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!