5

いくつかのコマンドを発行できるように、Paramiko を使用してチャネルを開く (および維持する) ことを試みています。ただし、paramiko.Transport を使用して秘密鍵を使用する例を見つけることができません。サーバーに接続して、次のコードを使用してコマンドを実行することができました。

    ssh = paramiko.SSHClient()
    paramiko.util.log_to_file("support_scripts.log")
    private_key = paramiko.RSAKey.from_private_key_file(rsa_private_key)
    ssh.connect(server, username=user, password='', pkey=private_key)
    ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(cmd)

問題ありません。私が理解していることから、それは「インタラクティブセッション」を作成しません。つまり、発行cd /home/my_user/my_scriptsしてから、のような別のコマンドを発行することはできませんpython script_in_my_scripts_folder.py。したがって、インタラクティブなセッションを維持するのに役立つ Paramiko Transport オブジェクトを使用しようとしています。高低を検索して、私が見つけた例はどれも私にとってうまくいきませんでした。現在、次のコードは 204 行目で「SSHException: Channel is not open」を返します。これは、以下の exec_command です。

    PRIVATEKEY = '/home/my_user/.ssh/id_rsa'
    user = 'harperville'
    server = '10.0.10.10'
    port = 22
    paramiko.util.log_to_file("support_scripts.log")
    trans = paramiko.Transport((server,port))
    rsa_key = paramiko.RSAKey.from_private_key_file(PRIVATEKEY)
    trans.connect(username=user, pkey=rsa_key)
    session = trans.open_channel("session")
    session.exec_command('cd /home/harperville/my_scripts/')

それが私に言っていることの要点は理解していますが、この問題を解決するのに役立つドキュメントを見つけることも理解することもできません。

前もって感謝します。

4

1 に答える 1

3

このサイトの助けを借りて問題を見つけました: http://j2labs.tumblr.com/post/4477180133/ssh-with-pythons-paramiko

私が変更した場合:

session = trans.open_channel("session")

に:

session = trans.open_session()

次に、次を使用してコマンドを実行できます。

session.exec_command('cd /home/harperville/my_scripts/')
于 2013-02-25T17:59:56.870 に答える