ホームページ >バックエンド開発 >Python チュートリアル >Paramiko モジュールのインストールと使用 (リモート ログイン サーバー)

Paramiko モジュールのインストールと使用 (リモート ログイン サーバー)

WBOY
WBOYオリジナル
2016-06-16 08:45:251330ブラウズ

1: はじめに

Paramiko は Python 言語で書かれたモジュールで、SSH2 プロトコルに従い、暗号化と認証によるリモート サーバーへの接続をサポートします。

paramiko は Python のようなクロスプラットフォーム言語を使用しているため、Linux、Solaris、BSD、MacOS X、Windows など、Python でサポートされているすべてのプラットフォームをサポートできます。プラットフォームを別のプラットフォームに接続して一連の操作を実行する場合、paramiko は最適なツールの 1 つです。

一般的な例として、Windows クライアントを使用して Linux サーバーにリモート接続し、上記のログのステータスを確認する必要があるという要求があります。通常は次の方法を使用します。

1: Telnet を使用します

2: パテを使用する

3: WinSCP を使用する

4: XManager などを使用します...

サーバーからファイルをダウンロードする必要がある場合はどうすればよいですか?一般的に使用される方法は次のとおりです:

1: Linux に FTP をインストールし、設定します

2: Linux に Sambe をインストールし、設定します...

一般的なソリューションでは、リモート サーバーの必要な構成が必要であることがわかります。リモート サーバーが 1 つまたは 2 つしかない場合は、1 つずつ構成する必要があります。上記の操作を実行するにはコードを使用します。上記の方法はあまり便利ではありません。

paramiko を使用すると、以前の方法と比較して、対応するソフトウェア (Python と PyCrypto) をローカルにインストールするだけで済み、複数のサーバーを接続するための設定は必要ありません。特に接続操作が面倒です。

2: インストール

paramiko、Python、および PyCrypto と呼ばれる別のモジュールをインストールするには、2 つの前提条件があります。

通常、標準の Python モジュールをインストールするには、モジュールのルート ディレクトリで実行するだけです:

コードをコピーします コードは次のとおりです:

python setup.py ビルド

python setup.py install

上記の 2 つのコマンドで十分ですが、paramiko と PyCrypto も例外ではありません。唯一の問題は、PyCrypto をインストールするときに、GCC ライブラリがない場合にエラーが報告されることです。 PyCrypto と paramiko のインストールに失敗する原因となります。

以下では、paramiko のインストールプロセスを説明するために 32 ビット Windows XP を例にしています

1: Python をインストールします。バージョンは 2.2 以降です。インストール手順は省略し、インストール ディレクトリは c:python であるとします。

2: GCC がローカルにインストールされており、PATH 変数で見つかるかどうかを確認します。そうでない場合は、Windows バージョンの GCC、つまり MinGW を使用できます。ダウンロード アドレスは http://sourceforge.net/projects/mingw/ です。を実行し、ネットワーク インストール用の exe ファイルをダウンロードします。ディレクトリが C:mingw であると仮定し、C:mingwbin を PATH に追加し、c:pythonlibdistutils の下に distutils.cfg という名前の新しいファイルを作成します。

と入力します。 コードをコピー コードは次のとおりです:

[build]
compiler=mingw32

3: PyCrypto をダウンロードします。アドレスは

です。

https://www.dlitz.net/software/pycrypto/

PyCrypto をインストールします:

解凍
dos の下の解凍されたディレクトリに入り、実行します

コードをコピーします コードは次のとおりです:

C:pythonpython.exe setup.py build
C:pythonpython.exe setup.py install

インストール テスト
python.exe を実行し、プロンプトで次のように入力します:

コードをコピーします コードは次のとおりです:

Crypto のインポート

エラー メッセージが表示されない場合は、Crypto が正常にインストールされたことを意味します

4: paramiko をダウンロードします。アドレスは http://www.lag.net/paramiko/

解凍
dos の下の解凍されたディレクトリに入り、実行します

コードをコピーします コードは次のとおりです:

C:pythonpython.exe setup.py build
C:pythonpython.exe setup.py install

Test paramiko
python.exe を実行し、プロンプトで次のように入力します:
コードをコピー コードは次のとおりです:

Import paramiko

エラー メッセージが表示されない場合、paramiko は正常にインストールされました

3: paramiko を使用する

paramiko のインストールがまだ少し面倒だと感じている場合でも、paramiko の利便性を利用すると、導入する価値があると感じられるでしょう。

以下は、paramiko を使用して Linux サーバーに接続するための 2 つのコードです

方法 1:

コードをコピーします コードは次のとおりです:

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("IPアドレス",22,"ユーザー名","パスワード")

2行目の関数上記のコードは、know_hosts ファイルにないホストへの接続を許可します。

方法 2:

コードをコピー コードは次のとおりです。

t = paramiko.Transport(("Host "," ポート"))
t.connect(ユーザー名 = "ユーザー名", パスワード = "パスワード")

リモート ホストに接続するためにキーが必要な場合は、上記のコードの 2 行目を次のように変更できます。
コードをコピー コードは次のとおりです。次のように:

t.connect(username = "ユーザー名", パスワード = "パスワード", hostkey="key")

実際的な例を以下に示します:

3.1 Windows は Linux 上で任意のコマンドを実行し、結果を出力します

Linux サーバーがポート 22 を開いている場合、Windows 側では、paramiko を使用してサーバーにリモート接続し、任意のコマンドを実行し、印刷またはその他の方法で結果を取得できます。

コードをコピー コードは次のとおりです:

#!/usr/bin/python
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("IP アドレス",22,"ユーザー名", "パスワード")
stdin、stdout、stderr = ssh.exec_command("コマンド")
print stdout.readlines()
ssh.close()

「コマンド」には、一般的に使用されるコマンドなど、Linux でサポートされている任意のコマンドを指定できます。


df: ディスク使用量の表示
uptime: システム実行時間情報の表示
cat: ファイルの内容の表示
mv/cp/mkdir/rmdir: ファイルまたはディレクトリの操作
/sbin/service/ xxxservice start/stop/restart: サービスを開始、停止、再起動します
netstat -ntl |grep 8080: ポート 8080 の使用状況を確認します
または nc -zv localhost: すべてのポートの使用状況を確認しますポート 状況
find/-name XXX: ファイルを検索

このように、Linux上でのほとんどの操作をWindows側で完結させることができ、この機能を拡張すれば複数のサーバーを同時に管理することも可能になります。

3.2 Widnows 側から Linux サーバーにファイルをダウンロードする

コードをコピー コードは次のとおりです:

#!/usr/bin/python
import paramiko

t = paramiko.Transport(("ホスト", "ポート"))
t.connect(username = "ユーザー名", パスワード = "パスワード")
sftp = paramiko.SFTPClient.from_transport( t)
remotepath='/var/log/system.log'
localpath='/tmp/system.log'
sftp.get(remotepath, localpath)
t.close()


3.3 widnows 側から Linux サーバーにファイルをアップロードする

コードをコピー コードは次のとおりです:

#!/usr/bin/python
import paramiko

t = paramiko.Transport(("ホスト", "ポート"))
t.connect(username = "ユーザー名", パスワード = "パスワード")
sftp = paramiko.SFTPClient.from_transport( t )
remotepath='/var/log/system.log'
localpath='/tmp/system.log'
sftp.put(localpath,remotepath)
t.close()

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。