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


Posted in Python onNovember 25, 2017

这篇文章里我们主要分享了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的ORM框架SQLAlchemy入门教程
Apr 28 Python
分享一下Python 开发者节省时间的10个方法
Oct 02 Python
浅谈python对象数据的读写权限
Sep 12 Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 Python
对python 矩阵转置transpose的实例讲解
Apr 17 Python
tensorflow实现加载mnist数据集
Sep 08 Python
Win10环境python3.7安装dlib模块趟过的坑
Aug 01 Python
python list多级排序知识点总结
Oct 23 Python
python多进程下的生产者和消费者模型
May 07 Python
Python应用实现双指数函数及拟合代码实例
Jun 19 Python
15个Pythonic的代码示例(值得收藏)
Oct 29 Python
关于Python错误重试方法总结
Jan 03 Python
python自动裁剪图像代码分享
Nov 25 #Python
分享一个简单的python读写文件脚本
Nov 25 #Python
python之virtualenv的简单使用方法(必看篇)
Nov 25 #Python
python多进程实现进程间通信实例
Nov 24 #Python
Python实现列表删除重复元素的三种常用方法分析
Nov 24 #Python
Python二叉树的定义及常用遍历算法分析
Nov 24 #Python
详解python上传文件和字符到PHP服务器
Nov 24 #Python
You might like
Jquery焦点图实例代码
2014/11/25 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
Vue仿今日头条实例详解
2018/02/06 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
python实现学生管理系统
2018/01/11 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
Python中一般处理中文的几种方法
2019/03/06 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
通过实例解析Python调用json模块
2019/12/11 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
2020/01/25 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
网络工程师的自我评价
2013/10/02 职场文书
战马观后感
2015/06/08 职场文书
法人代表资格证明书
2015/06/18 职场文书
个人道歉信大全
2019/04/11 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android