这篇文章里我们主要分享了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 命令把远程机器和本地的