【发布时间】:2020-12-07 15:28:07
【问题描述】:
对不起,如果这篇文章可能与其他人重复。我搜索了其他帖子,似乎没有找到我的答案。
这是我第一次使用 python paramiko。
我想用它在 Windows Server 2018 的虚拟机上的特定文件路径上执行 python 脚本。
文件路径为:“C:\Users\mirel.voicu\Desktop\script.py”。 当我连接 Putty 和 paramiko 时,ssh 连接按预期工作。
当使用 paramiko 并发送命令“cd”时,它首先返回“C:\Users\mirel.voicu”
如果我想更改路径而不是“cd”,并为“C:\Users\mirel.voicu\Desktop”发送命令,它会返回一个空白字符串或字节码。
我想我的错误是我传递文件路径的方式。我应该如何编写要被 paramiko 接受的文件路径字符串?
【问题讨论】:
-
“如果我想更改路径并发送“C:\Users\mirel.voicu\Desktop”的命令而不是“cd”,它会返回一个空白字符串或字节码。”——没错。 Windows(也不是 *nix)
cd命令不打印任何内容。虽然以这种方式执行cd命令是没有意义的。所以我猜这是XY problem。你可能正在寻找这个:Execute multiple commands in Paramiko so that commands are affected by their predecessors. -
嗨,我读到了这种将单个命令字符串以 ; 分隔的方法。我理解它,但不要说一开始我只想更改工作目录。我的问题似乎是当我将“cd path/to/file”传递给 paramiko 并针对 windows CLI 而不是 linux CLI 时。在互联网上的任何地方,我都发现大多数使用 linux 命令的示例都可以正常工作,但如果我对 paramiko 中的 Windows 终端说“cd path/to/file”,它就不会接受。相同的命令“cd path/to/file”直接在 Windows 的 putty CLI 中执行得很好。将继续搜索
-
“它不接受它” – 你的意思是什么?你是怎么发现的?再一次,
cd命令(在 Windows 和 Linux 上)根本没有任何输出。所以完全没问题,预计out.read()返回一个空字符串。 -
如果您看到上面的屏幕截图,其中命令只是“cd”,stdout.read().decode() 返回一个字符串。
-
是的,我通常使用 cd 路径来更改 CLI 中的工作目录。我想我正在寻找与 paramiko exec_command 相同的方法。但正如我所见,这里的工作方式不同
标签: python-3.x paramiko