検索
ホームページバックエンド開発Python チュートリアルPython サーバー プログラミング: Paramiko を使用して SSH リモート操作を実装する

クラウド コンピューティングとモノのインターネットの発展に伴い、サーバーのリモート操作がますます重要になっています。 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を使ってサーバーをリモート操作してみます。次の機能を実装します。

  • SSH サーバーに接続し、いくつかの基本的なコマンドを実行します
  • フォルダーの作成と削除
  • ファイルのアップロードとダウンロード

まず、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 関数は次のタスクを実行します:

  • ls -la コマンドを実行し、 print 出力
  • 新しいディレクトリを作成しました
  • ファイルをアップロードしました
  • 同じファイルをダウンロードしました
  • SSH 接続を閉じました

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 サイトの他の関連記事を参照してください。

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

Pythonの柔軟性は、マルチパラダイムサポートと動的タイプシステムに反映されていますが、使いやすさはシンプルな構文とリッチ標準ライブラリに由来しています。 1。柔軟性:オブジェクト指向、機能的および手続き的プログラミングをサポートし、動的タイプシステムは開発効率を向上させます。 2。使いやすさ:文法は自然言語に近く、標準的なライブラリは幅広い機能をカバーし、開発プロセスを簡素化します。

Python:汎用性の高いプログラミングの力Python:汎用性の高いプログラミングの力Apr 17, 2025 am 12:09 AM

Pythonは、初心者から上級開発者までのすべてのニーズに適した、そのシンプルさとパワーに非常に好まれています。その汎用性は、次のことに反映されています。1)学習と使用が簡単、シンプルな構文。 2)Numpy、Pandasなどの豊富なライブラリとフレームワーク。 3)さまざまなオペレーティングシステムで実行できるクロスプラットフォームサポート。 4)作業効率を向上させるためのスクリプトおよび自動化タスクに適しています。

1日2時間でPythonを学ぶ:実用的なガイド1日2時間でPythonを学ぶ:実用的なガイドApr 17, 2025 am 12:05 AM

はい、1日2時間でPythonを学びます。 1.合理的な学習計画を作成します。2。適切な学習リソースを選択します。3。実践を通じて学んだ知識を統合します。これらの手順は、短時間でPythonをマスターするのに役立ちます。

Python vs. C:開発者の長所と短所Python vs. C:開発者の長所と短所Apr 17, 2025 am 12:04 AM

Pythonは迅速な開発とデータ処理に適していますが、Cは高性能および基礎となる制御に適しています。 1)Pythonは、簡潔な構文を備えた使いやすく、データサイエンスやWeb開発に適しています。 2)Cは高性能で正確な制御を持ち、ゲームやシステムのプログラミングでよく使用されます。

Python:時間のコミットメントと学習ペースPython:時間のコミットメントと学習ペースApr 17, 2025 am 12:03 AM

Pythonを学ぶのに必要な時間は、人によって異なり、主に以前のプログラミングの経験、学習の動機付け、学習リソースと方法、学習リズムの影響を受けます。現実的な学習目標を設定し、実用的なプロジェクトを通じて最善を尽くします。

Python:自動化、スクリプト、およびタスク管理Python:自動化、スクリプト、およびタスク管理Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

Pythonと時間:勉強時間を最大限に活用するPythonと時間:勉強時間を最大限に活用するApr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Python:ゲーム、GUIなどPython:ゲーム、GUIなどApr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)