Python获取、修改主机名称和IP地址实践

Python获取、修改主机名称和IP地址的方法有多种,内置socket模块、执行系统命令、第三方模块等等,本文只是完成功能的一次成功的实践。

1. 获取、修改主机名称

本案例使用python的socket模块获取、修改主机名称,socket模块是一个用于实现网络通信的基本库,它提供了丰富的函数和方法,使得我们能够轻松地创建客户端和服务器程序,实现数据的发送和接收。socket模块的功能包括:

  • 创建套接字(socket):通过调用socket.socket()函数,可以创建一个套接字对象,用于实现网络通信。
  • 绑定套接字:使用bind()方法将套接字绑定到一个特定的地址和端口上。
  • 监听连接:使用listen()方法监听指定端口上的连接请求。
  • 接受连接:使用accept()方法接受客户端的连接请求。
  • 发送数据:使用send()或sendall()方法向已连接的客户端发送数据。
  • 接收数据:使用recv()方法从已连接的客户端接收数据。
  • 关闭套接字:使用close()方法关闭套接字,释放资源。

下面是一个简单的示例,展示了如何使用socket模块获取主机名、修改主机名。

以CentOS7为例,主机名称开始如下图所示:

在这里插入图片描述

import socket

# 获取本地主机名
hostname = socket.gethostname()
print("当前主机名:", hostname)

# 修改主机名称
new_hostname = "Desktop_test"
socket.sethostname(new_hostname)
print("新主机名:", socket.gethostname())
当前主机名: bogon
新主机名: Desktop_test

需要注意的是:

  • 修改主机名称仅适用于Linux系统上,而且在 Linux 系统上,如果要更改主机名称需要root权限,程序代码需要在管理员(root)账户下执行或者获得root权限运行。
  • 获取主机名称不受操作系统和权限限制,windows系统也可用。

2. 获取、修改主机IP地址

Python的subprocess模块是一个用于在新的进程中执行子程序的模块,它提供了一种跨平台的方法来创建和管理子进程。通过subprocess模块,我们可以在Python脚本中执行系统命令、调用其他可执行文件等。

下面是一个使用subprocess模块修改IP地址的例子:

以CentOS7为例,网络设备如下图所示(注意网络设备名称为“ens33”):

在这里插入图片描述

import socket
import subprocess

interface_name = 'ens33'
ip_address = '192.168.11.10'
# 获取当前IP地址
hostip=socket.gethostbyname(socket.gethostname())
print('当前主机IP:',hostip)

# 修改IP地址
subprocess.call(['sudo', 'ifconfig', interface_name, ip_address])
# 获取修改后的结果
s = subprocess.check_output(['ifconfig']).decode()
o = s.split('\n')
out = []
for v in o:
    out.append(v.strip())
out
当前主机IP: 192.168.11.11

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.11.10  netmask 255.255.255.0  broadcast 192.168.11.1
inet6 fe80::b40c:e688:e734:c643  prefixlen 64  scopeid 0x20<link>
ether 00:0c:29:2f:80:d0  txqueuelen 1000  (Ethernet)
RX packets 7586149  bytes 983642943 (938.0 MiB)
RX errors 0  dropped 335  overruns 0  frame 0
TX packets 257999  bytes 26525708 (25.2 MiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
inet 127.0.0.1  netmask 255.0.0.0
inet6 ::1  prefixlen 128  scopeid 0x10<host>

需要注意的是,在 Linux 系统上更改 IP 地址,则需要在管理员(root)权限下运行 Python 脚本。因此在调用 ifconfig 时,必须使用 sudo 命令。

重点提示,在更改 IP 地址时,需要注意一些事项:

  • 如果更改的 IP 地址在 DHCP 服务器的分配范围内,则可能会导致 IP 地址冲突。因此,应该避免设置和其他设备相同的 IP 地址。

  • 更改 IP 地址可能会影响网络连接。如果更改的 IP 地址是当前网络的网关或者 DNS 服务器,则可能会导致无法连接到网络。

  • 更改 IP 地址需要管理员权限。请勿滥用管理员权限,以防止造成不必要的损失。

3. 小结

Python 是一个强大的编程语言,特别适合于网络编程和管理。通过以上代码,我们可以轻松地获取和修改当前主机名,更改 IP 地址来实现特定的目的。当然,socket模块还提供了许多其他的方法、属性和常量,供我们进一步探索和学习。同时,我们也提到了需要注意的一些事项,以及避免滥用管理员权限的重要性。

猜你喜欢

转载自blog.csdn.net/xiaoyw/article/details/132294981