Linux
 Computer >> コンピューター >  >> システム >> Linux

Pythonの組み込みHTTPサーバーを使用したファイルの転送

Pythonの組み込みHTTPサーバーを使用したファイルの転送

ネットワークを介してファイルを転送する必要性は、頻繁に発生するものです。 GNU / Linuxシステムは、そのための複数のプロトコルとツールをサポートしています。そのうちのいくつかは、ある程度永続的なファイル共有用に設計されており(SMB、AFP、NFSなど)、セキュアコピー(SCP)などは、手動およびスクリプトですばやく使用できます。ファイル転送。これらの中には、ハイパーテキスト転送プロトコル(HTTP)があります。これは、ワールドワイドウェブが依存する多用途でユビキタスなプロトコルです。

ほとんどのLinuxディストリビューションにデフォルトで含まれているPythonは、「SimpleHTTPServer」および「http.server」モジュールを介して単純なHTTPサーバーを提供します。前者はPython2標準ライブラリにあり、後者はPython 3に含まれています。これらの軽量HTTPサーバーは個別にインストールする必要がなく、1つのコマンドですぐに起動できます。

Pythonのインストール

システムに少なくとも1つのPythonバージョンが含まれている可能性がありますが、そうでない場合は、ネイティブパッケージマネージャーを使用してPython3をインストールしてください。

たとえば、DebianとUbuntuの場合:

sudo apt update
sudo apt install -y python3

HTTPサーバーの起動

送信側のマシンで使用されているIPアドレスをメモしてください。

ip a s

Pythonの組み込みHTTPサーバーを使用したファイルの転送

次のコマンドを使用して、インストールされているPythonのバージョンを確認します。

python --version
python3 --version

同じマシンで、作業ディレクトリを転送するファイルを含むディレクトリに変更します。 Python HTTPサーバーの実行中は、現在の作業ディレクトリの内容全体にネットワーク上の誰もがアクセスできる可能性があることに注意してください(送信側のマシンにパブリックIPアドレスがある場合はインターネット)。

cd /path/to/files/

例:

cd /home/user/Documents/

これで、HTTPサーバーを起動できます。 Python 2.xの場合は、SimpleHTTPServerモジュールを使用します。

python -m SimpleHTTPServer

または、Python 3.xの場合はhttp.server:

python3 -m http.server

どちらのバリエーションもデフォルトでポート8000​​でリッスンしますが、モジュール名の後に別のポート番号を明示的に指定できます。

python -m SimpleHTTPServer [port]
python3 -m http.server [port]

注: 1024未満のポートを選択する場合は、root権限が必要です。

ファイルのダウンロード

受信側のマシンでは、任意のHTTPクライアントを使用してファイルをダウンロードできます。グラフィカル環境を使用している場合、多くの場合、ブラウザはコマンドラインユーティリティよりも便利です。 http:// IP_ADDRESS:8000を参照します。ここで、「IP_ADDRESS」は送信側コンピューターのIPアドレスであり、目的のファイルをクリックしてダウンロードします。

Pythonの組み込みHTTPサーバーを使用したファイルの転送

または、WgetまたはcURLを使用してファイルをフェッチすることもできます。すでに一方または両方がインストールされているはずです。どちらでもない場合は、Wgetをインストールすることをお勧めします。これは、よりユーザーフレンドリーで、ディレクトリ全体のダウンロードをサポートしているためです。

DebianおよびUbuntuの場合:

sudo apt install wget

RHELおよびCentOS6/7の場合:

sudo yum install wget

FedoraおよびRHEL/CentOS 8の場合:

sudo dnf install wget

Wgetの使用

Wgetを使用して単一のファイルをダウンロードするには、Wgetを呼び出してから、ダウンロードするファイルのURLを呼び出すだけです。

wget https://IP_ADDRESS:8000/filename

Pythonの組み込みHTTPサーバーを使用したファイルの転送

-rを追加することで、Wgetを使用してディレクトリ全体を再帰的にダウンロードすることもできます。 コマンドラインフラグ。

wget -r https://IP_ADDRESS:8000/

Pythonの組み込みHTTPサーバーを使用したファイルの転送

cURLの使用

デフォルトでは、curlはファイルの内容を端末に出力しようとします。したがって、代わりにファイルを保存するには、-oでファイル名を指定します フラグ。

curl https://IP_ADDRESS:8000/filename -o filename

Pythonの組み込みHTTPサーバーを使用したファイルの転送

結論

Pythonの標準ライブラリのHTTP機能は、基本的でありながら高速で便利なファイル転送方法を提供し、一部のシナリオに最適です。ただし、これは暗号化も認証も行わないプレーンHTTPであるため、機密ファイルを公開しないように注意する必要があることに注意してください。


  1. PythonでのCX_Freezeの使用

    時々私たちは非常にエキサイティングな何か違うものを作りたいと感じます、そして人間の性質によれば、私たちはいつもそれを共有するのが大好きです。 Pythonもそれらの願いを満たします。 Pythonを使用して、Pythonプログラムを友人と共有したい場合は、それを行うことができます。必要なのは、マシンのプログラムで使用されるすべてのモジュールに同じバージョンのPythonをインストールすることだけです。 まず、 pip install CX_Frezzeを使用してCX_Freezeモジュールをインストールする必要があります コマンドプロンプトのコマンド。 最初のステップは、この割り当て、

  2. LinuxでSCPを使用してファイルを安全に転送する方法

    Linuxサーバーにアクセスする場合、いくつかのオプションがあります。ユーザーインターフェースを備えたサーバーの場合はVNCを使用できますが、より一般的なオプションは、SecureShellまたはSSHを使用してヘッドレスサーバーにログインすることです。これは暗号化された安全なプロトコルであり、SSHクライアントを介してリモートシステムにアクセスできます。ただし、一部のファイルをサーバーに送信したい場合もあります。そのためには、堅牢なSSHプロトコル上で実行されるSecure Copy(SCP)と呼ばれるプログラムを使用して、ネットワーク経由でリモートシステムにファイルをすばやく転送できます。