Python 和 Windows 10:“telnet”未被识别为内部或外部命令、可运行程序或批处理文件

Posted

技术标签:

【中文标题】Python 和 Windows 10:“telnet”未被识别为内部或外部命令、可运行程序或批处理文件【英文标题】:Python and Windows 10: 'telnet' is not recognized as an internal or external command, operable program or batch file 【发布时间】:2020-04-02 16:21:33 【问题描述】:

我快要发疯了。

从 python 脚本启动时,我无法运行 telnet。我正在新安装的 Windows 10 上运行。

当我运行这个脚本时:

import subprocess
cmdline = "telnet 172.19.52.34"
rc = subprocess.call("start cmd /K " + cmdline, shell=True)

我得到了可怕的错误。 CMD 保持打开状态,我在 C:\Windows\System32 中找不到 telnet 命令。

但是当我打开一个普通的 CMD 时,telnet 从 C:\Windows\System32 工作。手动查看 C:\Windows\System32\ 会显示 telnet 可执行文件。

当我在 python 启动的 CMD 中测试 PATH 环境变量时,C:\Windows\System32\ 就在那里。

非常感谢任何指向解决方案的指针。

请再次将理智带入我的世界。 ;-)

亲切的问候。

/伯恩哈德

【问题讨论】:

您已经查看了路径变量等,但是当您手动使用命令行时,您可以实际运行您的 python 代码试图运行的命令吗? start cmd /K telnet? 也有可能start 实际上不是一个命令,而是一个命令行直接支持的函数。你可以只运行subprocess.call("telnet", shell=True)吗? Start 是 cmd 的命令。 Start 用于以不寻常的方式启动程序。尝试以正常方式启动 telnet。输入start /? 如果我从 Windows Run: "cmd /K telnet 172.19.52.34" 运行它,它工作正常。 Telnet 从我的脚本中只是不“可见”。我从没想过这是可能的。 【参考方案1】:

我发现了问题:这是在 64 位 Windows 上使用 32 位 python 的问题。在我安装了 64 位版本的 python 之后,它就可以工作了。

【讨论】:

那是什么意思。 32 位程序将在 SYSWoW64 中查找不是 System32 的文件。您可以通过 C:\Windows\sysnative\telnet 指定 64 位版本。请参阅docs.microsoft.com/en-us/windows/win32/winprog64/…32 位应用程序可以通过将 %windir%\Sysnative 替换为 %windir%\System32 来访问本机系统目录【参考方案2】:

您的 Windows 注册表中启用了 telnet 命令吗?

【讨论】:

以上是关于Python 和 Windows 10:“telnet”未被识别为内部或外部命令、可运行程序或批处理文件的主要内容,如果未能解决你的问题,请参考以下文章

Python telnet 不显示结果

实验六 快速生成树配置

telnet命令不能使用怎么办

注意啦!10 个你需要了解的 Linux 网络和监控命令

windows10 Python2和Python3共存

Windows10下python3和python2同时安装