如何设置";ip地址&引用;域名系统&引用;主机名“&引用;MAC地址“;用python?
我想写一个用于网络安全IP扫描的脚本,这样的工具可能需要欺骗它的主机NIC状态以进行测试,例如, 要设置NIC的ip地址, 要设置DNS地址, 在设置主机名时, MAC地址和 启用/禁用NIC适配器 我在谷歌上搜索发现,大多数soultion都使用“popen”调用系统现有工具,如如何设置";ip地址&引用;域名系统&引用;主机名“&引用;MAC地址“;用python?,python,macos,ip,hostname,nic,Python,Macos,Ip,Hostname,Nic,我想写一个用于网络安全IP扫描的脚本,这样的工具可能需要欺骗它的主机NIC状态以进行测试,例如, 要设置NIC的ip地址, 要设置DNS地址, 在设置主机名时, MAC地址和 启用/禁用NIC适配器 我在谷歌上搜索发现,大多数soultion都使用“popen”调用系统现有工具,如 >>> import os >>> p=os.popen("/sbin/ifconfig eth0") >>> t=p.read() >>> p
>>> import os
>>> p=os.popen("/sbin/ifconfig eth0")
>>> t=p.read()
>>> p.close()
从系统中获取返回。此外,还有一些模块可以读取NIC的状态,如netifaces,但似乎所有这些模块都是“只读”的,但不能直接连接
因为我发现没有任何模块可以直接设置NIC状态,所以我在这里寻求帮助,看看是否有人可以帮忙或展示更好的方式
任何提示都将被告知。
谢谢
Rgs
KC我以前做过这件事,像这样的底层操作系统没有明确的Python操作系统接口。您只需为UNIX(/Windows/Mac)命令编写一个(特定于操作系统的)包装器。这并不难,只是单调乏味
最后,您几乎肯定会为自己的理智编写一个包装器,以提供合理的默认arg值并整理代码。显然,请密切注意命令退出状态、路径前缀等。不确定您是否关心可移植性。虽然此代码片段可能会解决这个问题,但确实有助于提高帖子的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#
# Copyright 2014 by mimvp.com
def get_valid_ip(cls, ip_str):
ip_str_new = ''
ip_re = re.compile(r'\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b')
ipList = ip_re.findall(ip_str)
if len(ipList) >= 1:
ip_str_new = ipList[0]
ip_str_new = ip_str_new.lstrip("0") # '05.9.87.163' ==> '5.9.87.163'
return ip_str_new
if __name__ == '__main__':
result = os.popen("/sbin/ifconfig en0 | grep broadcast")
ip_inet = result.read()
for ip_str in ip_inet.split(" "):
if self.get_valid_ip(ip_str) :
print ip_str