银河麒麟服务器上下载脚本进行部署的时候,需要判断是部署在本机还是部署在远程服务器上,需要走不同的处理逻辑。
在Python中判断一个IP地址是否是本机的,可以采用以下方法:
import socketdef is_local_ip(ip_address):# 获取本机所有网络接口信息interfaces = socket.gethostbyname_ex(socket.gethostname())[2]# 检查输入的IP地址是否在本机IP列表中return ip_address in interfaces# 测试给定IP地址
ip_to_check = "192.168.0.1"
if is_local_ip(ip_to_check):print(f"IP {ip_to_check} 是本机IP地址")
else:print(f"IP {ip_to_check} 不是本机IP地址")
这段代码首先通过socket.gethostname()
获取主机名,然后使用gethostbyname_ex()
获取与该主机名关联的所有IP地址。之后,它检查输入的IP地址是否存在于这个IP地址列表之中。
注意:这种方法可能返回包括本地回环地址(例如 '127.0.0.1' 或 '::1')在内的所有本地接口地址。如果你只想检查非回环的真实网络接口上的IP地址,可以在比较前过滤掉回环地址。