PythonによるSSH接続の確立方法

1763 ワード

この例では、PythonがSSH接続を確立する方法について説明する.皆さんの参考にしてください.具体的な実現方法は以下の通りである.
Windowsの下でSSHサーバーにリモート接続してコマンドを実行する機能を実現する必要があるので、ネットで資料を探しています.私の環境はWindows 7 64ビット、Python 2.732ビットです.ネット上ではpycryptoとparamikoの2つのモジュールをダウンロードしてインストールする必要があると言われています.最後にダウンロードしたバージョンはpycrypto 2.3とparamiko 1.7.6です.インストールプロセスも簡単です.pycryptoをインストールしてparamikoをインストールし、解凍してコマンドプロンプトで解凍後のディレクトリに切り替え、python setup.py installを入力すればいいです.またpycryptoをインストールする前にmingwをインストールする必要があります.そうしないと、コンパイラが欠けているため、BATファイルが1つ欠けていることが求められます.mingwをインストールした後、Pythonインストールディレクトリの下のLibdistutilsフォルダにdistutils.cfgファイルを作成する必要があります.ファイルの内容は:[build]compiler=mingw 32
mingwのダウンロードアドレス:http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get-inst/pycryptoおよびparamikoのダウンロードとインストール参考:『windows下でpython paramikoモジュールをインストールするコード』
インストールが完了すると、書き込みコードを書くことができます.私のSSHサーバーはユーザー名とパスワードだけで接続できるので、最も簡単なものと言えるでしょう.
次の例では、stdout.readline()はリストを返します.一般的に、Linuxコマンドの各行の出力は1つの要素として格納され、改行文字が付いています.

import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('192.168.8.248', 22, username='root', password='password', timeout=4)
stdin, stdout, stderr = client.exec_command('ls -l')
for std in stdout.readlines():
  print std,
client.close()


出力された結果は次のとおりです.

>>> 
   184804
-rw------- 1 root root    973 05-19 20:27 anaconda-ks.cfg
-rw-r--r-- 1 root root   13895 05-19 20:27 install.log
-rw-r--r-- 1 root root   3058 05-19 20:25 install.log.syslog
-rw-r--r-- 1 root root 189008625 05-28 09:55 tmp
>>>

ここで述べたことが皆さんのPythonプログラム設計に役立つことを願っています.