【发布时间】:2015-11-27 22:00:18
【问题描述】:
我正在尝试使用 subprocess.check_call() 和 netsh 来更改我计算机的 NIC 卡设置。目前使用python 2.7和Windows7。
当我从 cmd.exe 运行时,这个命令是成功的:
netsh interface ip set address name="Local Area Connection" static 192.168.1.1 255.255.255.0 192.168.1.2
这个python脚本不成功:
import subprocess
command = ['netsh','interface','ip','set','address','name="Local Area Connection"','static','192.168.1.1','255.255.255.0','192.168.1.2']
result = subprocess.check_call(command)
这是上面python脚本给出的回溯输出的最后一行:
CalledProcessError: Command '['netsh', 'interface', 'ip', 'set', 'address', 'name="Local Area Connection"', 'static', '192.168.1.1', '255.255.255.0', '192.168.1.2']' returned non-zero exit status 1
所以,显然出了点问题,我正试图找出问题所在。我想解决的第一件事是返回码是什么意思?我希望我不是很密集,但https://python.readthedocs.org/en/v2.7.2/library/subprocess.html# 似乎并没有解释返回码的实际含义。我确实找到了这个线程,What is the return value of subprocess.call()?,但它通常只给出关于返回码的笼统陈述。有人知道如何找出特定于subprocess.check_call() 的返回码的含义吗?
这将帮助我开始进行故障排除,但如果有人对脚本失败的原因有任何想法,我将不胜感激。我尝试使用“以管理员身份运行”打开 cmd.exe,然后从那里运行 python 脚本,但结果是一样的。这个线程似乎是同一个问题,但我没有看到解决方案:
Using subprocess.call() to pass commands to execute by cmd。我尝试设置command = netsh interface ip set address name="Local Area Connection" static 192.168.1.1 255.255.255.0 192.168.1.2 和subprocess.check_call(command,shell=True) 以及subprocess.check_call(shlex.split(command)),并且都返回代码'1'。
【问题讨论】:
标签: python windows python-2.7 subprocess netsh