Linuxで独自コマンドを作成する方法

2023-8-14

■はじめに

お久しぶりです。r.portfolioの中の人「 r 」でございます。

サーバーエンジニアにとってLinuxはとても身近なOSです。

Linuxなどでスクリプトを作成し利用している方も多いのではないでしょうか...?

そこで今回は作成したバッシュクリプトをコマンドとして利用できるようにする方法を解説致します!!

■コマンドのスクリプトを作成する

はじめにコマンドとして使用したいスクリプトの作成を行います。

今回はバッシュスクリプトで作成致しますがPythonやPHP等のその他の言語でも作成可能となっております。

例として下記の文字列の出力スクリプトを作成し使用する事にします。

#!/bin/bash
echo "Hello World!"

■設定方法を選択する

次にコマンド設定方法の選択を行います。

Linuxにて独自コマンドを作成するには主に下記2つの方法がございます。

  1. ユーザー単位で設定する方法
  2. サーバー単位で設定する方法
    ※管理者権限が必要

■ユーザー単位で設定する方法

■サーバー単位で設定する方法

| 差分処理の作成 |

続いて差分処理の作成を行なっていきます。

差分がある場合は下記の処理を行います。

  1. メール通知
  2. リストの更新

差分がない場合は処理は不要です。より良い構成を取る場合等はログ出力等などの処理を作成しましょう。

下記が上記機能を組み込んだコードになります。

#!/bin/bash

if [ $newversion != $settingversion ]; then
    #差分がある場合の処理

    #メール通知処理
    {
     echo "To:<メールアドレス>"
     echo "From: <メールアドレス>"
     echo "Content-Type: text/plain;charset="UTF-8""
     echo "Subject: [WordPressの公開バージョンが$newversionに変更されました]"
     echo "動作要件"
     echo "---------------------------------"
     echo  "PHP $phpversion"
     echo  "MySQL $mysqlversion"
     echo "---------------------------------"
     echo "下記よりダウンロード可能です。"
     echo "$downloadlink"
    } |sendmail -i メールアドレス

    #リストの更新
    echo $newversion > setting-version.txt

elif [ $newversion == $settingversion ]; then
    #差分がない場合の処理
    #処理なし
fi

メール送信には「sendmail」を使用しています。上記「メールアドレス」を置き換える事で使用する事が可能です。

■プログラム全容

最終的なプログラムは以下となっております。

#!/bin/bash

#APIからCMSバージョンを取得し変数に格納
newversion=$(curl -s https://api.wordpress.org/core/version-check/1.7/ | grep -oE '"current":"[^"]+' | cut -d'"' -f4 | head -1)

#APIからPHPバージョンを取得し変数に格納
phpversion=$(curl -s https://api.wordpress.org/core/version-check/1.7/ | grep -oE '"php_version":"[^"]+' | cut -d'"' -f4 | head -1)

##APIからmysqlバージョンを取得し変数に格納
mysqlversion=$(curl -s https://api.wordpress.org/core/version-check/1.7/ | grep -oE '"mysql_version":"[^"]+' | cut -d'"' -f4 | head -1)

#APIからダウンロードリンクを取得し変数に格納
downloadlink=$(curl -s https://api.wordpress.org/core/version-check/1.7/ | grep -oE '"download":"[^"]+' | cut -d'"' -f4 | head -1)

#現バージョンを読み込み変数に格納
settingversion=$(cat setting-version.txt)

#差分確認
#差分がある場合→メール配送&リスト更新

if [ $newversion != $settingversion ]; then
    #差分あり

    #メール通知処理
    {
     echo "To:<メールアドレス>"
     echo "From: <メールアドレス>"
     echo "Content-Type: text/plain;charset="UTF-8""
     echo "Subject: [WordPressの公開バージョンが$newversionに変更されました]"
     echo "動作要件"
     echo "---------------------------------"
     echo  "PHP $phpversion"
     echo  "MySQL $mysqlversion"
     echo "---------------------------------"
     echo "下記よりダウンロード可能です。"
     echo "$downloadlink"
    } |sendmail -i メールアドレス

    #リスト更新
    echo $newversion > setting-version.txt

elif [ $newversion == $settingversion ]; then
    #差分がない場合の処理
    #処理なし
fi

■まとめ

いかがでしたでしょうか。

以上で「WordPressバージョンチェックをスクリプト」の完成となります!!

通知メールの宛先指定を「Slack」や「Teams」の外部サービス等にする事でより便利に活用できるかと思います!

最後まで見ていただき誠にありがとうございました!!

戻る