我试图使用python Subprocess模块从python代码启用/禁用以太网连接。下面是我的代码,其中第一步是寻找可用的"以太网连接"并且下一步根据"%interfaces%"中传入的参数启用/禁用以太网连接。
for /f "skip=2 tokens=3*" %%A in ('netsh interface show interface') do set interface=%%B
netsh interface set interface %interface% ENABLED
现在在python中使用时,我无法传递变量,但不确定它是否可行。仅传递如下命令按预期工作:
import subprocess
subprocess.call('netsh interface set interface Ethernet10 ENABLED')
我想做类似的事情:
import subprocess
subprocess.call (set x = 'Ethernet0')
subprocess.call('netsh interface set interface x ENABLED')
答案 0 :(得分:2)
subprocess.call将列表作为参数:
subprocess.call(['netsh', 'interface', 'set', 'interface', x, 'ENABLED'])
您可以改为传递shell=True
并且您的字符串可以正常工作,但这是一个安全风险,因为用户可以使用$(command_here)
如果您仍想使用字符串,可以使用shlex.split
。
答案 1 :(得分:0)
使用字符串格式化,插值或连接:
x = 'Ethernet10'
subprocess.call('netsh interface set interface ' + x + ' ENABLED')