当 运行 通过 Paramiko exec_command 的命令时,它正在添加一些其他数据 (\xe2\x80\x98/tmp/filename.txt\xe2\x80\x99)

When running a command via Paramiko exec_command it's adding some other data (\xe2\x80\x98/tmp/filename.txt\xe2\x80\x99)

我有一段用 Python 编写的代码,它使用 Paramiko 来 运行 一个将文件从远程服务器上的一个地方复制到另一个地方的命令。这在过去两年中一直运行良好。我今天在一个新的 OS 上尝试了它(RHEL 7.9),但它一直失败。我一直在尝试调试这个问题,但一直碰壁。以下是一段代码:

dirpath = '/etc/somedir'
stdin, stdout, stderr = client.exec_command(f'sudo mv /tmp/filname.txt {dirpath}/filename.txt')

和输出

STDERR: ['mv: cannot move \xe2\x80\x98/tmp/filename.txt\xe2\x80\x99 to \xe2\x80\x98/etc/somedir/filename.txt\xe2\x80\x99: No such file or directory\n'] ; 
STDOUT: []

我正在使用 Paramiko 2.6.0、Python 3.6.3,远程机器是 运行ning RHEL 7.9。我对它束手无策,找不到问题所在,因为它在所有其他机器上都能正常工作。我也找不到关于堆栈溢出的类似问题。其他网站也有类似的问题,但是没有人回答。

代码误导了你。 \xe2\x80\x98/9left/right single quote 的 UTF-8。它很可能是错误消息格式的一部分,而不是文件名的一部分。

您的根本问题很可能就是错误消息所说的:

No such file or directory

同时检查源路径和目标路径。


如果你这样做,你应该得到同样的错误:

ssh user@host sudo mv /tmp/filname.txt /etc/somedir/filename.txt