2017-11-29 4 views
3

引数としてファイルのリストを使って試してみるまで、私はparamikoのexec_commandをlsと一緒に使用しました。 My機能は次のとおりです。paramiko lsがいくつかのファイルの出力を切り捨てました

def jz_orion_ssh_sout_list(cmd): 
    with paramiko.SSHClient() as ssh: 
     ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
     ssh.connect(orion['host'], username=orion['username'], password=orion['password']) 
     ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(cmd) 
     sout = ssh_stdout.readlines() 
     serr = ssh_stderr.readlines() 
     return sout 

ときcmd='ls -l /my/path/file.txt'それがうまく動作しますが、cmd='ls -l /my/path/file1.txt file2.txt file3.txt'は、それだけでFILE1.TXT返したとき。後者のcmdは、ターゲットサーバー上で直接実行され、3つのファイルすべてを返します。

paramikoで動作させるには?

PS。私はparamiko:cmd='ls -l /my/path/{file1.txt,file2.txt,file3.txt}'で動作する別の構文を見つけましたが、まだ私は前に述べたものと一緒に失敗を引き起こす原因を知りたいと思います。

+0

'ls -l/my/path/file [1-3] .txt'を使わないのはなぜですか? – haifzhan

答えて

0

それはあなたのcmd問題です: 例えば、私は、例えば、フォルダの下に3つのファイルがあります。

➜ ls example 
file1 file2 file4 

をFILE2が発見されていません。

➜ ls -l example/file1 file2 
ls: file2: No such file or directory 
-rw-r--r-- 1 haifzhan staff 391 28 Nov 10:23 example/file1 

ls -l example/file1 file2ls FILE2を語っているカレントディレクトリの下にありますアンダー例以外

我々はまた、単にファイルfile1とfile2

➜ ls -l example/file[1-2] 
-rw-r--r-- 1 haifzhan staff 391 28 Nov 10:23 example/file1 
-rw-r--r-- 1 haifzhan staff 81 28 Nov 10:26 example/file2 

ためのコマンドを実行した場合:あなたのケースでは

ls -l example/file1 example/file2 
-rw-r--r-- 1 haifzhan staff 391 28 Nov 10:23 example/file1 
-rw-r--r-- 1 haifzhan staff 81 28 Nov 10:26 example/file2 

ls -l /my/path/{file1.txt,file2.txt,file3.txt}作品は、すべてのあなたのファイルが/my/path

下にある lsを言っているということです
関連する問題