首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在python中设置"ip地址“、"DNS”、“主机名”、"MAC地址“?

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

Stack Overflow用户
提问于 2010-07-27 12:43:38
回答 2查看 1.5K关注 0票数 1

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

我在谷歌上搜索了一下,发现大多数soultion都是使用"popen“调用系统现有的工具,比如

代码语言:javascript
运行
复制
>>> import os
>>> p=os.popen("/sbin/ifconfig eth0")
>>> t=p.read()
>>> p.close() 

从系统中获取返回值。还有一些模块可以读取网卡的状态,比如网络接口,但它们似乎都是“只读”的,但不能直接写入。

因为我发现没有模块可以直接设置网卡状态,所以我在这里请求帮助,看看是否有人可以帮助或展示更好的方法。

任何提示都会被采纳。谢谢!

Rgs KC

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-11 21:09:38

代码语言:javascript
运行
复制
#!/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
票数 0
EN

Stack Overflow用户

发布于 2011-07-04 08:27:23

我之前就这么做过,没有明确的Python os接口来访问像这样的低级操作系统特定的东西。您只需为UNIX(/Windows/Mac)命令编写一个(特定于操作系统的)包装器。这并不难,只是单调乏味。

os.popen*() is very deprecated (since 2.4), use subprocess module

使用interface to subprocess.Popen() is admittedly irritating,您几乎肯定会为自己编写一个包装器,以提供合理的默认arg值并整理您的代码。显然,要密切关注命令出口状态、路径前缀等。不确定你有多关心可移植性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3340798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档