2017-05-05 5 views
0

私はリモートサーバ上でコマンドを実行するためにparamiko.SSHClient.exec_command()を使用しています。 invoke_shell(width = 150)のように、幅を変更することができるかどうかを知っていますか?を増やすparamiko.SSHClient.exec_command()width

I exec_command("ls -la")私が手:

drwx------. 6 myuser myuser 4096 25 avril 15:59 
. 
drwxr-xr-x. 14 root root  4096 5 mai 15:05 
.. 
-rw-------. 1 myuser myuser 2818 28 avril 11:09 
.bash_history 
-rw-r--r--. 1 myuser myuser 340 14 avril 14:16 
.bashrc 

と私がしたい:

drwx------. 6 myuser myuser 4096 25 avril 15:59 . 
drwxr-xr-x. 14 root root  4096 5 mai 15:05 .. 
-rw-------. 1 myuser myuser 2818 28 avril 11:09 .bash_history 
-rw-r--r--. 1 myuser myuser 340 14 avril 14:16 .bashrc 

(exec_commandを使用して、invoke_shellない)

マイコード:

ssh_client = paramiko.SSHClient() 
mykey   = paramiko.RSAKey.from_private_key_file("/path/to/my/key", password="passphrase") 
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh_client.connect("myserver.mydomain.com", username="myuser", pkey=mykey) 
transport  = ssh_client.get_transport() 
agent_channel = transport.open_session() 
agent_handler = paramiko.agent.AgentRequestHandler(agent_channel) 
stdin, stdout, stderr = ssh_client.exec_command("ls -la") 
+0

これは、リモートサーバー上の構成を使って実現できると思います。それはあなたのために働くのですか?どのOSを実行していますか? – sytech

+0

さて、私のLinuxシェルから、 'ssh [email protected]"を実行すると "ls -la" '私は行が分割されないようにしたい。私はそれがサーバー構成のものではないと思います。私はPythonコードをCentOS7で実行します。 –

+0

問題を再現できませんでした。 'exec_command'ではあなたは' pty'端末を設定していません。それはおそらくそれと関係があります。あなたは 'exec_command'と' ssh'セッションから 'env'を実行し、環境変数がどのように違うのか見ることができます。 – tdelaney

答えて

0

[OK]を、見つけたそれ:ちょうどpprint奇妙な振る舞いだった。受信した行をリストに入れてから、pprintこのリストに入れます。私がしている場合:

for line in received: 
    print(line) 

それでいいです。 pprint printed:

['-rw-r----- 1 myuser mygroup  23228063744 06 mai 11:41 ' 
'my_file.txt-rw-r----- 1 ' 
... 

私はその理由を知りません。さて、pprintの使用を中止します。