首页 > 解决方案 > Python脚本中的Netsh抛出语法错误

问题描述

我试图自动更改静态 IP 地址,但是 netsh 命令抛出此错误:The filename, directory name, or volume label syntax is incorrect.语法应该是:netsh interface ip set address "Connection_name" static new_ip subnet_mask default_gateway

到目前为止,我已经进行了一些调试,很明显崩溃已经发生了os.system,但除此之外我没有任何线索,似乎我正在使用确切的所需语法

import os

def change_ip(wifi_name):
    info_dict = {}
    info_keywords = ["IPv4 Address", "Subnet Mask", "Default Gateway"]
    wifi_info = os.popen("ipconfig").read()
    wifi_info = wifi_info.split("Wireless LAN adapter Wi-Fi:")[1]
    wifi_info = wifi_info.split("Ethernet adapter Bluetooth Network Connection:")[0]

    for data in wifi_info.split("\n"):
        for keyword in info_keywords:
            if keyword in data:
                info_dict[keyword] = data.split(': ')[1]

    base, var = info_dict["IPv4 Address"].split(".")[:-1], int(info_dict["IPv4 Address"].split(".")[-1])
    if var == 225: var = 1
    else: var += 1
    base.append(str(var))

    print(f"Old ip: {info_dict['IPv4 Address']}")
    info_dict["IPv4 Address"] = ".".join(base)
    os.system(f'netsh interface ipv4 set address "{wifi_name}" static {info_dict["IPv4 Address"]} {info_dict["Subnet Mask"]} {info_dict["Default Gateway"]}')
    print(f"New ip: {info_dict['IPv4 Address']}")

    print(info_dict)

change_ip(wifi_name = input("Name of network connection: "))

os.system("pause")

标签: pythonwindowsnetsh

解决方案


推荐阅读