2017-08-26 37 views
0

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

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

当内壳执行这个命令实际上工作正常,但是当我把它通过SSH:

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

它创建一个空文件,并将其输出重定向到stdout。任何人都可以给我一个解释,为什么会发生这种情况?我试图查看文档,但找不到解决方案。

回答

0

你应该把引号的命令:

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

你说得对,我忘了把它放在我原来的职位。但那不是问题,因为我已经在我的代码中完成了。 – nstojsic

+0

这个命令在ssh.exec_command()中运行良好。 file1.txt被读取,file2.txt被写入远程主机。你还有问题吗? – Marsu

+0

是的。我想我发现了这种情况的原因,但我不知道如何解决这个问题。当我单独执行命令时,它工作正常。但是当我第一次执行命令来查找文件的绝对路径时,它会将内容重定向到stdout。当我查看exec_command()的文档时,它说:“打开一个新频道并执行请求的命令。” – nstojsic

相关问题