Python中如何获取系统的IP地址
发布时间:2024-01-17 12:32:17
在Python中可以使用socket模块来获取系统的IP地址。socket模块提供了许多网络编程相关的函数和类。其中,socket.gethostbyname()函数可以用于获取主机名对应的IP地址。
下面是一个使用socket.gethostbyname()函数获取系统IP地址的示例:
import socket
def get_local_ip():
# 获取本机主机名
hostname = socket.gethostname()
# 获取本机IP地址
ip_address = socket.gethostbyname(hostname)
return ip_address
if __name__ == '__main__':
local_ip = get_local_ip()
print('本机IP地址:', local_ip)
运行上面的代码,会返回本机的IP地址。
另外,如果需要获取多个IP地址,可以使用socket.gethostbyname_ex()函数,它返回一个三元组,其中 项是主机名,第二项是别名列表,第三项是IP地址列表。下面是一个使用socket.gethostbyname_ex()函数获取所有IP地址的示例:
import socket
def get_all_ips():
# 获取本机主机名
hostname = socket.gethostname()
# 获取主机名、别名列表和IP地址列表
ips = socket.gethostbyname_ex(hostname)[2]
return ips
if __name__ == '__main__':
ip_addresses = get_all_ips()
print('本机所有IP地址:')
for ip in ip_addresses:
print(ip)
运行上面的代码,会返回本机的所有IP地址。
需要注意的是,gethostbyname()和gethostbyname_ex()函数只能获取本机的IP地址,无法获取其他主机的IP地址。如果需要获取其他主机的IP地址,可以使用subprocess模块执行系统命令ping来获取。下面是一个使用subprocess模块获取其他主机IP地址的示例:
import subprocess
def get_remote_ip(remote_host):
# 构造ping命令
command = ['ping', '-c', '1', remote_host]
# 执行ping命令
result = subprocess.run(command, capture_output=True, text=True)
# 提取IP地址
start_index = result.stdout.find('(') + 1
end_index = result.stdout.find(')')
ip_address = result.stdout[start_index:end_index]
return ip_address
if __name__ == '__main__':
remote_host = 'www.baidu.com'
ip_address = get_remote_ip(remote_host)
print('远程主机{}的IP地址:{}'.format(remote_host, ip_address))
运行上面的代码,会返回远程主机的IP地址。
总结一下,Python中可以使用socket模块的gethostbyname()和gethostbyname_ex()函数来获取系统的IP地址。如果需要获取其他主机的IP地址,可以使用subprocess模块执行系统命令ping来获取。
