繁体   English   中英

如何在python中设置“ ip地址”,“ DNS”,“主机名”,“ MAC地址”?

[英]how to setup “ip address”,“DNS”, “hostname”,“MAC address” in python?

我想编写用于网络安全IP扫描的脚本,这样的工具可能需要欺骗其主机NIC状态以进行测试,例如,设置NIC的IP地址,设置DNS地址,同时设置主机名,MAC地址和启用/禁用NIC适配器。

我在Google上搜索后发现,大多数灵魂是使用“ popen”调用系统现有的工具,例如

>>> import os
>>> p=os.popen("/sbin/ifconfig eth0")
>>> t=p.read()
>>> p.close() 

从系统中获得回报。 另外,还有一些模块可以读取NIC的状态,例如netifaces,但似乎所有模块都是“只读”的,但不能直接写入。

由于我发现没有模块可以直接设置NIC状态,因此我在这里寻求帮助,以查看是否有人可以帮忙或提供更好的方法。

任何提示将被应用。 谢谢!

Rgs KC

#!/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

之前我曾经做过,没有像这样的低级特定于OS的东西的显式Python os接口。 您只需要为UNIX(/ Windows / Mac)命令编写一个(特定于操作系统的)包装器即可。 这并不难,只是乏味。

os.popen *()从2.4开始非常不推荐使用,请使用subprocess module

subprocess.Popen()接口确实令人讨厌 ,您几乎肯定会为自己的理智编写一个包装器,以提供合理的默认arg值并整理您的代码。 显然,请密切注意命令退出状态,路径前缀等。不确定您是否在乎可移植性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM