クラウド コンピューティングとモノのインターネットの発展に伴い、サーバーのリモート操作がますます重要になっています。 Python では、Paramiko モジュールを使用して SSH リモート操作を簡単に実装できます。この記事では、Paramiko の基本的な使い方と、Python で Paramiko を使用してサーバーをリモート管理する方法を紹介します。
Paramiko とは
Paramiko は、SSH クライアントと SSH サーバーの接続と制御に使用できる SSHv1 および SSHv2 用の Python モジュールです。 Paramiko モジュールを使用すると、リモートでログインしてサーバーを操作するための Python スクリプトを簡単に作成できます。
Paramiko の基本的な使用法
Paramiko モジュールの基本的な使用法は非常に簡単で、Paramiko の SSHClient クラスを使用して SSH クライアント オブジェクトを作成し、SSH サーバーに接続できます。基本的な例を次に示します。
import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('hostname', username='username', password='password')
この例では、最初に SSHClient オブジェクトを作成し、set_missing_host_key_policy メソッドを使用して、不足している SSH キーを自動的に追加できるようにします。次に、connect メソッドを使用して SSH サーバーに接続し、ホスト名、ユーザー名、パスワードをパラメーターとして渡します。
これで、SSH サーバーへの接続に成功しました。次に、SSHClient オブジェクトを使用して、サーバーのオペレーティング システム情報の取得などのリモート コマンドを実行できます。
stdin, stdout, stderr = ssh.exec_command('uname -a') print(stdout.read())
この例では、exec_command メソッドを使用して uname -a コマンドを実行し、出力を取得します。また、stdout.read() を使用して出力を読み取り、出力しました。
リモート コマンドの実行に加えて、SSHClient オブジェクトを使用してファイルをアップロードおよびダウンロードすることもできます。ファイルをアップロードする例を次に示します。
sftp = ssh.open_sftp() local_file = '/path/to/local/file.txt' remote_file = '/path/to/remote/file.txt' sftp.put(local_file, remote_file) sftp.close()
この例では、まず open_sftp メソッドを使用して SFTP セッションを開き、put メソッドを使用してローカル ファイルをリモート サーバーにアップロードします。また、sftp.close() メソッドを使用して SFTP セッションを閉じました。
Paramikoを使ってSSHリモート操作を実現する
Paramikoの基本的な使い方がわかったので、次はParamikoを使ってサーバーをリモート操作してみます。次の機能を実装します。
まず、Paramiko モジュールをインストールする必要があります:
pip install paramiko
次に、Python スクリプトを作成します。まず、必要なモジュールをインポートします:
import os import paramiko
次に、SSH サーバーのホスト名、ユーザー名、パスワードを含むいくつかの定数を定義します:
HOST = 'hostname' USER = 'username' PASSWORD = 'password'
次に、paramiko.SSHClient を使用できます。 SSH サーバーに接続するクラス:
ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(HOST, username=USER, password=PASSWORD)
この例では、set_missing_host_key_policy() メソッドを使用して、不足している SSH キーを自動的に追加します。
次に、さまざまなタスクを実行するためのいくつかの関数を定義します。 1 つ目はコマンドを実行する関数です。
def run_command(command): stdin, stdout, stderr = ssh.exec_command(command) output = stdout.read().decode('utf-8') return output
この関数はコマンド パラメーターを受け取り、SSHClient オブジェクトの exec_command メソッドを使用してコマンドを実行し、出力を文字列として返します。
次に、ディレクトリを作成する関数を定義します。
def create_directory(path): sftp = ssh.open_sftp() try: sftp.mkdir(path) except IOError: pass sftp.close()
この関数は、パス パラメーターを受け取り、SFTP セッションを使用してディレクトリを作成します。
ファイルをアップロードおよびダウンロードする関数も定義します:
def upload_file(local_path, remote_path): sftp = ssh.open_sftp() sftp.put(local_path, remote_path) sftp.close() def download_file(remote_path, local_path): sftp = ssh.open_sftp() sftp.get(remote_path, local_path) sftp.close()
これらの関数は、それぞれローカル パスとリモート パス (アップロード用)、またはリモート パスとローカル パス (ダウンロード用) を受け取ります)、 SFTP セッションを使用して、対応するファイルをアップロードまたはダウンロードします。
最後に、すべてのタスクを実行する main 関数を定義します:
def main(): # Run a command output = run_command('ls -la') print(output) # Create a directory create_directory('/home/username/new_folder') # Upload a file upload_file('/path/to/local/file.txt', '/home/username/new_folder/file.txt') # Download a file download_file('/home/username/new_folder/file.txt', '/path/to/local/file.txt') # Close the SSH connection ssh.close()
この main 関数は次のタスクを実行します:
Nowこのスクリプトを実行して出力を表示できます:
python ssh.py
結果は次のようになります:
total 20 drwxr-xr-x 1 username username 4096 Aug 15 02:24 . drwxr-xr-x 1 username username 4096 Aug 15 02:20 .. -rw------- 1 username username 1675 Aug 15 02:21 .bash_history -rw-r--r-- 1 username username 220 Aug 15 02:20 .bash_logout -rw-r--r-- 1 username username 3771 Aug 15 02:20 .bashrc drwx------ 1 username username 4096 Aug 15 02:20 .cache drwxr-xr-x 1 username username 4096 Aug 15 02:20 .config drwx------ 1 username username 4096 Aug 15 02:20 .gnupg -rw-r--r-- 1 username username 807 Aug 15 02:20 .profile -rw-r--r-- 1 username username 0 Aug 15 02:21 test.txt
Summary
SSH リモートは、Paramiko を使用して簡単に実現できます。モジュールが動作します。この記事では、Paramiko の基本的な使用法を紹介し、Python で Paramiko を使用してサーバーをリモート管理する方法を示しました。クラウド コンピューティングの分野でも、モノのインターネットの分野でも、Paramiko はサーバー管理の自動化に役立つ非常に便利なツールです。
以上がPython サーバー プログラミング: Paramiko を使用して SSH リモート操作を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。