2017-08-26 36 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

相關問題