Python と Bash の基礎

PythonBeginner
オンラインで実践に進む

はじめに

Linux の自動化では、Bash はコマンドラインツールを組み合わせる用途に適しています。しかし、処理が複雑になるにつれて、より明確な構造、優れたデータ処理機能、豊富な標準ライブラリを備えた Python のほうが適している場合が多くなります。

そのため、多くの運用チームは両方を使い分けています。短く、シェルに適した処理には Bash を使用し、保守しやすい自動化スクリプトには Python を使用します。

この実験では、Linux 環境で Python を使うための最初のステップを学びます。Python のバージョン確認、簡単なテストに使える対話型シェルの操作、ネイティブな Linux コマンドと同じように動作する Python スクリプトの作成を行います。

Python のバージョンを確認する

コードを書く前に、システムにインストールされている Python インタープリターのバージョンを確認することが重要です。使用している Ubuntu を含む、現在の多くの Linux ディストリビューションには Python 3 があらかじめインストールされています。

運用作業におけるバージョン確認は、互換性の確認でもあります。Python のバージョンが異なると、使用できる言語機能やライブラリの動作が変わることがあります。インタープリターがどの環境でも同じだと暗黙に想定すると、あるマシンで動作するスクリプトが別のマシンで失敗する可能性があります。

このステップでは、インストールされている Python 3 のバージョンを確認します。これにより、後のステップで作成するスクリプトを実行できる環境であることを確かめます。

ターミナルを開き、次のコマンドを実行してバージョンを確認します。

python3 --version

次のような出力が表示されます。

Python 3.10.12

正確なバージョン番号は多少異なる場合がありますが、Python 3.x であれば問題ありません。ここでは python3 を明示的に使用しています。これは、一部の古いシステムでは python(3 なし)が非推奨の Python 2 を指していたり、そもそもリンクされていなかったりするためです。

REPL を使う

Python には対話型シェルがあり、一般に REPL(Read-Eval-Print Loop)と呼ばれます。ファイルを作成しなくても、コードの一部を試したり、ライブラリが利用できるか確認したり、簡単な計算を行ったりできる非常に便利なツールです。

REPL を使うと、結果をすぐに確認できます。ファイルを編集して保存し、何度も実行する代わりに、式を 1 つずつ試せます。多くのエンジニアは、アイデアを実際のスクリプトにする前に試す場所として、シェルのプロンプトと同じように REPL を使用しています。

このステップでは、Python の対話型シェルに入り、簡単なコマンドを実行した後、Bash シェルに戻ります。

まず、次のように入力して Python 3 の対話型シェルを起動します。

python3

コマンドプロンプトが >>> に変わります。これは、Python 環境内に入ったことを示しています。

次に、メッセージを表示する簡単な Python コマンドを入力します。

print("Hello from Python REPL")

出力がすぐに表示されます。

Python シェルを終了して通常の Linux Bash シェルに戻るには、次のように入力します。

exit()

または、Ctrl + D を押します。

終了すると、通常のコマンドプロンプト(例:labex:~/project $)が再び表示されます。

スクリプトを作成する

REPL はテストに適していますが、実際の自動化ではコードをスクリプトとして保存する必要があります。Python スクリプトは、Python コードを含む単なるテキストファイルです。

一時的なコマンドではなくスクリプトを使う実用上の利点は、処理を繰り返し実行できることです。ロジックをファイルに保存すれば、内容を確認したり、Git でバージョン管理したり、翌日に再実行したり、何も入力し直さずに別のエンジニアへ渡したりできます。

このステップでは、system_info.py という名前のファイルを作成します。

nano テキストエディターを使ってファイルを作成し、開きます。

nano system_info.py

ファイルに次の内容を追加します。

print("Starting system info script...")

nano を保存して終了するには、次の操作を行います。

nano エディターで変更を保存するために Ctrl + O を押し、続けて Enter を押してファイル名を確定します。最後に Ctrl + X を押してエディターを終了し、ターミナルに戻ります。

次に、ファイルが作成されたことを確認します。

ls -l system_info.py

標準ライブラリを使う

Python の大きな強みの 1 つは、「battery included」とも呼ばれる充実した標準ライブラリです。uname や cat /etc/os-release のようなコマンドの出力を解析することが多い Bash とは異なり、Python にはシステム情報へ適切にアクセスするための組み込みモジュールがあります。

これが、Python が運用ツールで広く使われている主な理由の 1 つです。小さなテキスト処理コマンドを多数つなぎ合わせる代わりに、構造化された関数やオブジェクトを直接扱えます。そのため通常は、スクリプトが読みやすくなり、出力形式が変わった場合にも壊れにくくなります。

このステップでは、スクリプトを変更して platform ライブラリを使い、オペレーティングシステムの詳細を表示します。

nano でスクリプトをもう一度開きます。

nano system_info.py

内容を次のように変更します。

import platform

print("Starting system info script...")
print(f"System: {platform.system()}")
print(f"Release: {platform.release()}")
print(f"Version: {platform.version()}")

nano を保存して終了します(Ctrl+O、Enter、Ctrl+X)。

Python インタープリターにスクリプトを明示的に渡して、スクリプトをテストできます。

python3 system_info.py

Linux 環境の詳細を示す出力が表示されます。

スクリプトを実行する

これまでのステップでは、python3 system_info.py を使ってスクリプトを実行しました。

インタープリターを明示的に呼び出す方法は、初心者にも分かりやすい実行方法です。シェルがファイルの実行方法を推測する必要がなく、どのインタープリターがコードを実行しているかを正確に確認できます。

標準的な Linux の使い方では、./system_info.py のようにスクリプトを直接実行することもあります。これには次の 2 つが必要です。

  1. 「shebang」行(ここでは省略しています)。
  2. ファイルに「Execute」権限が設定されていること。

ここでは shebang のない簡潔な環境を使用しているため、最も確実な方法である Python インタープリターを明示した実行方法を使います。

スクリプトが引き続き動作することを確認するため、もう一度実行します。

python3 system_info.py

この明示的なコマンドは、Linux に実行内容を正確に伝えます。つまり、「python3 プログラムを使って、system_info.py ファイルの命令を読み取り、実行する」という意味です。

まとめ

この実験では、Bash と Python の間をつなぐ基本操作を学びました。具体的には、次のことを行いました。

  • 環境の互換性を確認するために Python のバージョンを確認する。
  • 対話型テストに REPL を使う。
  • Python スクリプトを作成する。
  • 標準ライブラリの platform を使ってシステム情報にアクセスする。
  • python3 コマンドを使ってスクリプトを実行する。

これらのスキルは、Linux で Python スクリプトを作成するための基礎になります。Bash だけを使う場合よりも、複雑で読みやすい自動化ツールを作成できるようになります。