有时,你需要快速查看设备的某些信息,例如主机名、IP地址和网络接口的数量等。这些信息使用Python脚本很容易获取。 1.2.1 准备工作 编写代码之前先要在设备上安装Python。大多数Linux发行版都预装了Python。如果使用微软Windows操作系统,可以从Python的网站上下载二进制文件:http://www.python.org/download/。 要了解系统是否已经安装了Python,可以查阅操作系统的文档。在设备上安装好Python之后,可以在命令行中输入python,尝试打开Python解释器。输入python后应该显示解释器提示符>>>,具体的输出如下所示: ~$ python Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) [GCC 4.5.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 1.2.2 实战演练 这个攻略很简短,可以直接写在Python解释器中。 首先,使用下面的命令导入Python中的socket库: >>> import socket 然后,调用socket库提供的gethostname()方法,把结果保存在一个变量中,如下所示: >>> host_name = socket.gethostname() >>> print "Host name: %s" %host_name Host name: debian6 >>> print "IP address: %s" %socket.gethostbyname(host_name) IP address: 127.0.1.1 这些操作可以使用内置的类方法,定义成一个独立的函数print_machine_info()。 我们要在常用的__main__代码块中调用这个函数。运行时,Python会为某些内部变量赋值, 例如__name__。在这里,__name__表示调用程序的进程名。如果在命令行中运行脚本(如后面的命令所示),__name__的值是__main__。但是,如果在其他脚本中导入,情况就不同了。也就是说,如果在命令行中调用这个模块,会自动运行print_machine_info()函数;如果在其他脚本中导入,用户就要手动调用这个函数。 代码清单1-1展示了如何获取设备的信息,如下所示: #!/usr/bin/env python # Python Network Programming Cookbook -- Chapter -1 # This program is optimized for Python 2.7. It may run on any # other Python version with/without modifications. import socket def print_machine_info(): host_name = socket.gethostname() ip_address = socket.gethostbyname(host_name) print "Host name: %s" % host_name print "IP address: %s" % ip_address if __name__ == '__main__': print_machine_info() 若想运行这个脚本,要在命令行中指定源码文件,如下所示: $ python 1_1_local_machine_info.py 在我的设备上,显示了如下输出: Host name: debian6 IP address: 127.0.0.1 在你的设备上,输出的内容根据系统的主机配置会有所不同。 1.2.3 原理分析 import socket语句导入Python提供的一个核心网络库。然后调用两个工具函数:gethostname()和gethostbyname(host_name)。在命令行中可以输入help(socket.geth- ostname)查看帮助信息,或者在浏览器中访问http://docs.python.org/3/library/socket.html。在命令行中查看这两个函数的帮助信息,得到的输出如下: gethostname(...) gethostname() -> string Return the current host name. gethostbyname(...) gethostbyname(host) -> address Return the IP address (a string of the form '255.255.255.255') for a host. 第一个函数没有参数,返回所在主机或本地主机的名字。第二个函数接收一个参数hostname,返回对应的IP地址。
Python网络编程攻略——1.2 打印设备名和IPv4地址
书名: Python网络编程攻略
作者: 萨卡尔
出版社: 人民邮电出版社
译者: 安道
出版年: 2014-12-1
页数: 170
定价: 45.00元
装帧: 平装
丛书: 图灵程序设计丛书
ISBN: 9787115372697