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のバージョンを確認します。
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アドレスであり、目的のファイルをクリックしてダウンロードします。
または、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
-r
を追加することで、Wgetを使用してディレクトリ全体を再帰的にダウンロードすることもできます。 コマンドラインフラグ。
wget -r https://IP_ADDRESS:8000/
cURLの使用
デフォルトでは、curlはファイルの内容を端末に出力しようとします。したがって、代わりにファイルを保存するには、-o
でファイル名を指定します フラグ。
curl https://IP_ADDRESS:8000/filename -o filename
結論
Pythonの標準ライブラリのHTTP機能は、基本的でありながら高速で便利なファイル転送方法を提供し、一部のシナリオに最適です。ただし、これは暗号化も認証も行わないプレーンHTTPであるため、機密ファイルを公開しないように注意する必要があることに注意してください。
-
PythonでのCX_Freezeの使用
時々私たちは非常にエキサイティングな何か違うものを作りたいと感じます、そして人間の性質によれば、私たちはいつもそれを共有するのが大好きです。 Pythonもそれらの願いを満たします。 Pythonを使用して、Pythonプログラムを友人と共有したい場合は、それを行うことができます。必要なのは、マシンのプログラムで使用されるすべてのモジュールに同じバージョンのPythonをインストールすることだけです。 まず、 pip install CX_Frezzeを使用してCX_Freezeモジュールをインストールする必要があります コマンドプロンプトのコマンド。 最初のステップは、この割り当て、
-
LinuxでSCPを使用してファイルを安全に転送する方法
Linuxサーバーにアクセスする場合、いくつかのオプションがあります。ユーザーインターフェースを備えたサーバーの場合はVNCを使用できますが、より一般的なオプションは、SecureShellまたはSSHを使用してヘッドレスサーバーにログインすることです。これは暗号化された安全なプロトコルであり、SSHクライアントを介してリモートシステムにアクセスできます。ただし、一部のファイルをサーバーに送信したい場合もあります。そのためには、堅牢なSSHプロトコル上で実行されるSecure Copy(SCP)と呼ばれるプログラムを使用して、ネットワーク経由でリモートシステムにファイルをすばやく転送できます。