第1关:获取MAC地址
任务描述
本关任务:用Python获取本机Mac地址并输出。
相关知识
为了完成本关任务,你需要掌握: 1.如何获取MAC地址; 2.如何处理字符串。
获取Mac地址
MAC地址也称物理地址,它是一个用来确认网络设备位置的地址。在OSI模型中,第三层网络层负责IP地址,第二层数据链接层则负责MAC地址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。
查看mac地址的方法
- 常见的网络命令:
- windows 命令:ipconfig
- linux命令:ifconfig
- 程序来获取MAC地址。
下面介绍如何使用python获取本机的MAC地址。
1.uuid模块
UUID(Universally Unique Identity)的缩写,是一种软件建构的标准,通常由32字节16进制数表示(128位),它可以保证时间和空间的唯一性。 Python有一个名为uuid(通用唯一标识符)的库,用于生成128位的随机对象。该库根据系统时间和计算机的网络地址生成唯一的id。uuid(对象是不可变的,它包含一些用于创建各种唯一id的函数。uuid常用于:基于id的MAC地址、创建唯一的随机id、加密哈希值或随机文档等。
UUID由五个组件组成,每个组件都有固定的长度。连字符将各个部分分开。
UUID的格式“ 8-4-4-4-12”, 如:“ 00000000-0000-0000-0000-000000000000”
用uuid可以获取本机网关的MAC地址,方法介绍如下:
2.获取MAC地址的相关方法
uuid.getnode()
获取硬件的MAC地址,并以48位长度的正整数(十进制)形式返回,如果一个机器有多个网络接口,可能返回其中的任一个。
uuid.uuid1(node=None, clock_seq=None)
node和clock_seq是可选参数 node是硬件地址,它是一个48位正整数。如果未给出节点,则使用 uuid.getnode() 功能来获取当前主机的通用管理的MAC地址。 如果给定clock_seq,它将用作序列号。否则,选择一个随机的14位序列号。
示例如下:
mac = uuid.uuid1()
输出(16进制): UUID('a82b2eb0-abcd-eaec-8a35-0657e38e6a7d')
类型为:UUID类型
可以将其转换为字符串: str(mac)
其中后12位即:0657e38e6a7d
,某网关的MAC地址。
mac = uuid.UUID( int=uuid.getnode() )
输出(16进制): UUID('00000000-0000-0000-0000-0657e38e6a7d')
类型为:UUID类型
可以将其转换为字符串: str(mac)
其中后12位即:0657e38e6a7d
,某网关的MAC地址。
字符串处理常用方法举例
`join(seq)`
以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串。 示例:
s1 = "-"
seq = ("h", "e", "l", "l", "o") # 字符串序列
print (s1.join(seq))
输出结果:
h-e-l-l-o
`len(string)`
返回字符串长度。
split(str="", num=string.count(str))
str -- 分隔符;
num -- 分割次数。默认为 -1, 即分隔所有。
示例:
str = "this is string example"
print (str.split( )) # 以空格为分隔符
print (str.split('i',1)) # 以 i 为分隔符
print (str.split('a')) # 以 a 为分隔符
输出结果:
['this', 'is', 'string', 'example']
['th', 's is string example']
['this is string ex', 'mple']
[ : ]
截取字符串中的一部分,遵循左闭右开原则,str1[0:2] 是不包含第 3 个字符的。示例:
str1 = "this is string example"
print(str1[0:2])
输出结果:
th
编程要求
根据提示,在右侧编辑器补充代码,
1、获取并输出计算机的MAC地址(十六进制)。
如: xxxxxxxxxxxx
测试说明
平台会对你编写的代码进行测试:文章来源:https://www.toymoban.com/news/detail-771672.html
开始你的任务吧,祝你成功!文章来源地址https://www.toymoban.com/news/detail-771672.html
import uuid
# ********Begin********#
# 1、获取MAC地址(十六进制)
mac = uuid.uuid1()
# 2、将1中获取的结果转化为字符串类型
mac = str(mac)
# 3、字符串类型截取后12位
str1 = mac[-12:]
# 4、输出MAC地址
print(str1)
# ********End********#
# 经典阅读理解题,根据题中意思照抄就行
第2关:获取主机名称和ip地址
任务描述
本关任务:
1、用Python获取主机名并输出;
2、用Python获取ip地址并输出。
相关知识
为了完成本关任务,你需要掌握:
1.socket基本知识;
2.如何获取主机名和IP。
socket相关知识
网络上的两个程序通过一个双向的通信连接实现数据交换,这个连接的一端称为一个socket。socket通常被叫做“套接字”,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。
- python中的socket库提供了处理公共传输的特定类,以及一个用于处理其余部分的通用接口。
- socket是内置库,无需安装;
socket库的函数举例:
gethostname()
返回主机名,示例:
socket.gethostname()
gethostbyname('主机名')
将主机名转换为ipv4地址
gethostbyname_ex('主机名')
返回主机名、主机别名列表、主机IP地址列表
编程要求
根据提示,在右侧编辑器补充代码:获取并输出计算机的主机名和IP地址;
测试说明
平台会对你编写的代码进行测试:
开始你的任务吧,祝你成功!
import socket
# ********Begin********#
# 1、获取主机名
hostname = socket.gethostname()
# 2、获取IP
ip = socket.gethostbyname_ex(hostname)
print("主机名:", hostname)
print("IP:", ip)
# ********End********#
# 还是阅读理解,注意要获取ip地址的时候不能直接照抄阅读材料,参考主机名获取方式
第3关:保存/打开网络信息文件
任务描述
当程序运行时,变量是保存数据的好方法,但变量、序列以及对象中存储的数据是暂时的,程序结束后就会丢失,如果希望程序结束后数据仍然保持,就需要将数据保存到文件中。 Python 提供了内置的文件对象,以及对文件、目录进行操作的内置模块,通过这些技术可以很方便地将数据保存到文件(如文本文件等)中。
本关任务:
1、将第二关获取的主机名和IP地址写入文件;
2、读取文件并输出文件内容。
相关知识
为了完成本关任务,你需要掌握:
1、文件路径;
2、Python文件读写操作。
文件
关于文件,它有两个关键属性:
- “文件名”:为每个文件设定的名称;
- “路径”:指明文件在计算机上的位置。
示例1:
(windows系统上,D盘myfile文件夹下有个test.txt文件)
文件路径为:D:\myfile\
文件名为: test.txt
说明:在 Windows 上,路径书写使用反斜杠 "" 作为文件夹之间的分隔符。但在 OS X 和 Linux 上,使用正斜杠 "/" 作为它们的路径分隔符。
示例2:
(linux系统上,myfile文件夹下有个test.txt文件)
文件路径为:/myfile
文件名为: test.txt
绝对路径与相对路径
明确一个文件所在的路径,有 2 种表示方式,分别是:
- 绝对路径: 从根文件夹开始。
Window 系统中以盘符(C:、D:)作为根文件夹; 而 OS X 或者 Linux 系统以 / 作为根文件夹。
- 相对路径: 文件相对于当前工作目录所在的位置。
例1:当前工作目录为 "C:\Windows\System32",若文件 demo.txt 就位于这个 System32 文件夹下,则 demo.txt 的相对路径表示为 ".\demo.txt", 其中 .\ 就表示当前所在目录; 同时“..\” 表示当前所在目录的父目录。
例2:当前工作目录为 "/data/workspace/myshixun/src",若文件 demo.txt 就位于这个 src 文件夹下,则 demo.txt 的相对路径表示为 "./demo.txt",其中 ./就表示当前所在目录; 同时“../” 表示当前所在目录的父目录。
Python文件操作
Python 中,对文件的操作有很多种,常见的操作包括创建、删除、修改权限、读取、写入等,这些操作可大致分为以下 2 类:
- 系统级操作:删除、修改权限,作用于文件本身;
- 应用级操作:写入、读取,是文件最常用的操作。
文件的应用级操作可以分为以下 3 步,每一步都需要借助对应的函数实现:
- 1、打开文件
open() 函数用于创建或打开指定文件,该函数的常用语法格式如下:
file = open(file_name [, mode='r' [ , buffering=-1 [ , encoding = None ]]])
- file_name:要创建或打开文件的文件名称,该名称要用引号(单引号或双引号都可以)括起来。需要注意的是,如果要打开的文件和当前执行的代码文件位于同一目录,则直接写文件名即可;否则,此参数需要指定打开文件所在的完整路径。
- mode:可选参数,用于指定文件的打开模式。可选的打开模式:如:
- r 只读模式打开文件;
- w 以只写模式打开文件,若该文件存在,打开时会清空文件中原有的内容;
- 如果不写,则默认以只读(r)模式打开文件。
- buffering:可选参数,用于指定对文件做读写操作时,是否使用缓冲区。
- encoding:可选参数,手动设定打开文件时所使用的编码格式。
示例:
f = open("./a.txt", w)
print(f)
-
2、对已打开文件做读/写操作
-
读取文件内容
可使用 read()、readline() 以及 readlines() 函数 read() :逐个字节(或者逐个字符)读取文件中的内容; readline() :用于读取文件中的一行; readlines(): 用于读取文件中的所有行。 示例:
f = open("./test.txt",'r')
data = f.readlines()
print(data)
- 向文件中写入内容
write() :可以向文件中写入指定内容; 示例:
f = open("./test.txt", 'w')
f.write("写入的数据")
- 3、关闭文件
完成对文件的读/写操作之后,最后需要关闭文件。 使用 close() 函数关闭文件。 示例:
f.close()
编程要求
根据提示,在右侧编辑器补充代码,
1、将第二关获取的主机名和IP地址写入文件,文件存储路径为'/data/workspace/myshixun/src/step3',文件名为'test.txt';
2、读取test.txt,并输出文件内容。
测试说明
平台会对你编写的代码进行测试:
开始你的任务吧,祝你成功!
import socket
# 获取主机名
hostname = socket.gethostname()
# 获取IP
ip = socket.gethostbyname(hostname)
# ********Begin********#
# 1、写入文件
f = open('/data/workspace/myshixun/src/step3/test.txt', "w")
f.write(hostname)
f.write(ip)
f.close()
# 2、读取文件
f = open('/data/workspace/myshixun/src/step3/test.txt', "r")
# 3、输出文件内容
print(f.read())
f.close()
# ********End********#
# 具体的没啥说的,还是阅读理解,就是别照抄阅读材料就好
到了这里,关于python获取网络信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!