【问题标题】:How to get output from netsh using python subprocess?如何使用 python 子进程从 netsh 获取输出?
【发布时间】:2016-09-27 09:18:02
【问题描述】:

谁能告诉我我做错了什么,使用python子进程库在windows上执行netsh命令时没有显示输出?

例子:

p = subprocess.run('netsh dhcp show server', shell=True, stdout=subprocess.PIPE)
print(p.stdout.decode('utf-8'))

输出:空字符串

当我执行一些其他命令时,echo Hi,我得到一个输出:

p = subprocess.run('echo Hi', shell=True, stdout=subprocess.PIPE)
print(p.stdout.decode('utf-8'))

我的目的是获取我们的 DHCP 服务器列表并解析输出。

谢谢!

【问题讨论】:

  • 我根本不了解 Windows,附近也没有 Windows 盒子,但会不会是 1.netsh 在这种情况下实际上并没有给出任何输出,你有吗?在cmd 中检查了吗?和 2. netsh 实际上将信息打印到 stderr,所以你也必须捕获它?所以你可以尝试用stderr=subprocess.STDOUT 调用run() 看看它是否有效。
  • 你说得对,如果我在 cmd 中执行该命令,则该命令有效,但是当我尝试使用 Pycharm 终端或在 cmd 中运行脚本时,没有返回任何内容。
  • 那么,您是否尝试过将标准错误重定向到标准输出?

标签: python subprocess dhcp netsh


【解决方案1】:

在执行子进程之前尝试将进程的代码页改为UTF-8。

chcp 65001

【讨论】:

    猜你喜欢
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 2015-06-08
    • 2014-02-10
    • 2021-01-18
    • 1970-01-01
    • 2011-09-08
    相关资源
    最近更新 更多