【问题标题】:Changing files on remote machine using Paramiko使用 Paramiko 更改远程计算机上的文件
【发布时间】:2017-08-26 23:17:57
【问题描述】:

我正在尝试更改远程 Linux vm 上的文件,并使用 Paramiko 将其输出重定向到另一个(在同一台机器上)。它应该很简单,但我显然在这里遗漏了一些东西。我使用 tr 命令替换选项卡的每个空格,然后将其重定向到另一个文件:

command= "tr ' ' '\t' <file1 .txt> file2.txt"

此命令在 shell 中执行时实际上可以正常工作,但是当我通过 SSH 发送时:

(stdin, stdout, stderr) = ssh.exec_command(command)

它创建一个空文件,并将其输出重定向到标准输出。谁能给我解释为什么会这样?我试图查看文档,但找不到解决方案。

【问题讨论】:

    标签: python ssh paramiko


    【解决方案1】:

    你应该在你的命令周围加上引号:

    command='tr " " "\t" < /tmp/file1.txt > /tmp/file2.txt'
    

    【讨论】:

    • 你说得对,我忘了把它放在我原来的帖子里。但这不是问题,因为我已经在我的代码中做到了。
    • 这个命令在 ssh.exec_command() 中运行良好。读取 file1.txt 并根据需要将 file2.txt 写入远程主机。你还有问题吗?
    • 是的。我想我找到了发生这种情况的原因,但我不确定如何解决这个问题。当我单独执行命令时,它工作正常。但是当我第一次执行命令来查找文件的绝对路径时,它会将内容重定向到标准输出。当我查看 exec_command() 的文档时,它说:“打开了一个新通道并执行了请求的命令。”
    猜你喜欢
    • 2020-06-08
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多