2016-05-02 4 views
2

paramiko exec_commandを対話シェルなしで使用すると、出力を取得するのが簡単です。中間シェルparamiko exec_commandのような入力を読み込む方法

しかし、私は対話シェルを使用する必要があり、単一のコマンドの出力を読むのは苦痛に思えます。私はデモやこれの例を見つけることができませんでした。

私は次のようなものを使用してみました:Implement an interactive shell over ssh in Python using Paramiko?

しかし、それは本当に悪い形にあります。

答えて

0

リンクに記載されているソリューションを使用した後、「本当に悪い」とはどういう意味ですか?

出力に不要な文字が含まれていたため、削除しました。を参照してください。

+0

私はそれがどこにでも簡単に再利用できるようにクラスにされるべきだと思います。 –

+0

私は同意しますが、それは非常に簡単に数分で行うことができます。クラスを作成する際に問題がある場合は、そう言いましょう。コードを編集します。 – misha

+1

あなたの要求に応じてコードを更新しました。今は完全に再利用可能なクラスです。 – misha

1

paramikoを使用する必要はありません。

paramikoを使用して、パスワードなしのssh接続を開き、subporcessモジュールを使用してメソッドを実装してください。例えば

def run_shell_remote_command(remote_host, remote_cmd): 
     p = subprocess.Popen(['ssh', '-nx', remote_host, remote_cmd], stdout=subprocess.PIPE, 
          stderr=subprocess.PIPE) 
     stdout, stderr = p.communicate() 
     if p.returncode != 0: 
      raise RuntimeError("%r failed, status code %s stdout %r stderr %r" % (
       remote_cmd, p.returncode, stdout, stderr)) 
     return stdout.strip() # This is the stdout from the shell command 
+0

問題は、私は順番に多くのコマンドを実行しなければならず、コマンドごとにプロセスを開くには遅すぎる/役に立たないということです。 –

+0

私はいくつかのRPCライブラリがあなたのニーズに合っていると思います。私はPythonの 'RPyc'を使いました。興味があればここで使用例を投稿します。 – Samuel

+0

リモートでnetcatを使用して通信する方法についてどう思いますか? –

関連する問題