#1:はじめに
DebianベースのLnuxOSでのupdate処理について、毎度毎度コマンドで実行するのも面倒でしたのでシェルスクリプトに落とし込みました。
スクリプトに落とし込むことで、cronなどで定期実行することが可能になりますのでDebianベースでのLinuxOSを運用している方には是非オススメです。
#2:概要
● 本スクリプトにおける機能要件
・OS上のパッケージのアップデート、及びアップグレードを行う
・アップデート後は、不必要パッケージの削除を行う
・sudo実行時にpasswdを問われないよう[/etc/sudores]を修正する
・スクリプト実行後、OSの再起動を行う
● 本スクリプトの使用環境
・Debian
・Ubuntu
#3:スクリプトの紹介
本スクリプトは以下GitHubにも記載していますのでよろしければそちらでもご確認ください。
https://github.com/chibiharu/Linux-Update-Scripts/tree/master/Debian
##3.1:使用方法
本スクリプトはどのユーザーでもroot権限で使用できるように、実行前に[/etc/sudores]を修正する必要があります。
また、スクリプトの権限は644以上にしてください。
① ユーザにパスワード権限を付与
sudo権限が必要なイベント時、パスワードが聞かれないように設定します。
まず、visudoコマンドを実行し、[/etc/sudores]ファイルを開きます。
開いたファイルの最下行にコードを追記し、ファイルを保存します。
$ sudo visudo
$ sudo cat /etc/sudores
~~~ 略 ~~~
<ユーザ名> ALL=(ALL) NOPASSWD:ALL #<--左記コードを最下行に追記する
② スクリプトの作成
任意のディレクトリにて以下コマンドを実行してください
# スクリプトを生成
$ touch auto_update_to_debian.sh
# スクリプトに使用権限を付与
$ chmod 777 auto_update_to_debian.sh
③ コードの貼り付け
スクリプトをvimで開き、<項番3-2>のスクリプトコードを貼り付けます
$ vim auto_update_to_debian.sh
$ cat auto_update_to_debian.sh
<項番3-2>のスクリプトコード>
##3.2:スクリプト
以下、本スクリプトになります。
そのままコピペでご使用できます。
#######################################################################################
#
# <スクリプト名>
# Ubuntu(Debian) - 自動アップデートスクリプト
#
# <概要>
# アップデート処理を行う
#
# <更新履歴>
# 20210920 - 新規作成
#
#######################################################################################
#!/bin/bash
#####################################################################
## 事前設定
#####################################################################
# 今日の日付を取得
today=$(date "+%Y%m%d")
######################################################################
## パラメータ設定
######################################################################
# ログディレクトリ
log_DIR="/var/log/update_log"
# ログファイル
log_FILE="/var/log/update_log/update_${today}.log"
######################################################################
## 必要リソースの生成
######################################################################
# ログディレクトリの生成
if [ ! -d $log_DIR ]; then
sudo mkdir ${log_DIR}
fi
# ログファイルの生成
if [ ! -e $log_FILE ]; then
sudo touch ${log_FILE}
fi
######################################################################
## 関数:アップデート処理
######################################################################
# アップデート処理
all_update () {
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get autoremove -y
sudo apt-get clean -y
sudo apt-get autoclean -y
sudo apt-get check -y
}
######################################################################
## 実行前処理
######################################################################
# ログ出力日時のフォーマットを yyyy/mm/dd hh:mm:ss に設定する
start_time=$(date '+%Y/%m/%d %T')
# 実行ログ見出し(開始)の出力
echo "##### $start_time start update #####" | sudo tee -a ${log_FILE}
######################################################################
## アップデート処理
######################################################################
# アップデート処理
all_update | sudo tee -a ${log_FILE}
######################################################################
## 実行後処理
######################################################################
# ログ出力日時のフォーマットを yyyy/mm/dd hh:mm:ss に設定する
end_time=$(date '+%Y/%m/%d %T')
# 実行ログ見出し(終了)の出力
echo "###### $end_time end update ######" | sudo tee -a ${log_FILE}
# 再起動
sudo reboot
#4:まとめ
ログファイルの出力先等にこだわりがなければ、本スクリプトをコピペでそのまま使用することができます。
アップデート処理はOSに少なからず影響を与えますので、実行ログは保管していた方が良いかと思います。
Debian系OSをご使用の方は、是非本スクリプトをご活用していただければと思います。