2016-05-19 7 views
0

このトピックに関するいくつかの質問と回答を見ましたが、私はこのハウツーを理解することができませんでした。私が行うことができるよ何Paramiko、Python、Windows:SSHを使用してリモートコンピュータとそこからNASに接続する方法

  1. :Paramikoを使用してPythonスクリプトを使用してリモートコンピュータに接続し、情報を返す、例えば、スイッチをpingする:

    のssh = PK。 SSHClient()

    ssh.set_missing_host_key_policy(pk.AutoAddPolicy())

    ssh.connect( '{}' 形式(IP)、ポート= XXX、ユーザ名= 'XXX'、パスワード= 'XXX' )

    STDIN、STDOUT、標準エラー= \

    ssh.exec_command( 'ピング-n 1 xxx.xxx.xxする\ n')

    プリント( 'Pingのスイッチ:\ n' は、stdout.readlines再びこの中で(別のデバイスに接続するコンピュータに、一度接続し、SSH(paramiko.SSHClient())を使用して:私はやりたいが、方法がわからない何を())

  2. ケースNAS)と「exec_command」のようなもの:

    SSH = pk.SSHClient()

    ssh.set_missing_host_key_policy(pk.AutoAddPolicy())

    ssh.connect( '{}' 形式(IP)、ポート= XXX、 #コンピュータに接続する

    ssh.connect( '{}')(IP(ポート)= xxx、username = 'xxx'、パスワード= 'xxx') #コンピュータからのNASへの接続

    stdin、stdout、stderr = \

    ssh.exec_command( 'シャットダウン\ nを、Y \ n' は)#センドコマンドNAS

    印刷( 'Pingのスイッチ:\ n' は、stdout.readlines())

enter image description here

誰でも方法を知っていますか?

ありがとうございます。

答えて

0

より簡単な方法で質問することができます。私が間違っていないのであれば、paramikoを使って1つのマシンに接続しようとしていて、そのマシンからNASマシンに接続したいのですか?

1台のマシンにAと接続し、そのマシンのsshハンドルを入れてNASマシンに接続し、もう1つのsshハンドルを生成することですか?

後者の場合は、クラスを使用して、すべてのssh接続用にオブジェクトを作成することをお勧めします。 あなたはこれを見て持つことができます。

ssh.py

+0

本当にリモートコンピュータからNASへのparamiko接続が必要ですか?そうでない場合は、(ssh <[email protected]>)を使用してparamikoハンドルを使用してNAS上でコマンドを直接実行しますが、これにはsshキーがすでにリモートマシンに保存されている必要があります。あるいは、リモートマシン(NASに接続してコマンドを実行する)にスクリプトを保存し、リモートマシンハンドル – LearningNinja

+0

を使用してそのスクリプトを呼び出すことができます。スクリプトを確認します。ありがとうございます。 –

+0

例:ssh <[email protected]>、たとえば上のコードスニペットにありますか? –

1

あなたは、トンネルを開くparamiko demoを確認するか、sshtunnelパッケージを使用する必要があります。 後者の場合:

import paramiko as pk 
import sshtunnel 

with sshtunnel.open_tunnel(
    remote_computer_ip, 
    ssh_username=remote_username, 
    ssh_password=remote_password, 
    remote_bind_address=(NAS_IP, 22), 
    debug_level='DEBUG', 
) as tunnel: 
    ssh = pk.SSHClient() 
    ssh.set_missing_host_key_policy(pk.AutoAddPolicy()) 
    ssh.connect(NAS_IP, 
       port=tunnel.local_bind_port, # redirected to port NAS_IP:22 
       username=NAS_USER, 
       password=NAS_PASS) 
    (stdin, stdout, stderr) = ssh.exec_command(...) # your stuff 
+0

ありがとう!私は試しましたが、エラーが発生しました: _ゲート​​ウェイに接続できませんでした((10060、 '接続されたパーティが一定期間後に正しく応答しなかったために接続できませんでした。接続されたホストが応答に失敗しました '、None、10060、None))_ remote_computerのポートを追加しましたが、エラーが続く。 –

+0

エラーは、remote_host IPに到達できないと言っているだけです。ダブルチェックで詳細な出力が可能です(上記の編集を参照)。 – fernandezcuesta

+0

ここは第1部です_2016-05-23 13:24:00,997 |情報| ssh設定ファイルの読み込みをスキップする 2016-05-23 13:24:01,013 |情報|エージェントからロードされた0個のキー 2016-05-23 13:24:01,044 |情報|ゲートウェイへの接続:xx.xxx.xxx.xx:ユーザー 'xxxxx'としてのxxxx 2016-05-23 13:24:01,044 | DEBUG |並行接続が許可されている:True 2016-05-23 13:24:01,044 | DEBUG |パスワードでログインする*********** 2016-05-23 13:24:07,081 |情報|オープニングトンネル:0.0.0.0:65496 <> 192.168.0.2:22 2016-05-23 13:24:28,125 |情報|開いている接続をすべて閉じる... _ –

関連する問題