簡體   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