ペネトレーションしのべくん

さようなら、すべてのセキュリティエンジニア

Homebrewのoutdatedなパッケージの数をログイン時に表示する

はじめに

パッケージ管理してますか?(挨拶)

自動アップデートするのも、 .bashrcbrew outdated | wc -l などと書いて毎ログイン一瞬硬直するのも嫌だったので、 /etc/motd を使ってひと工夫することにしました。

手順

/etc/motd を作る

/etc/motd がない前提です。

$ sudo touch /etc/motd
$ sudo chown ${USER}:staff /etc/motd
$ sudo chmod 644 /etc/motd

スクリプトを準備する

${HOME}/.local/bin/brew-outdated-packages.sh として以下のシェルスクリプトを作成しました。

#!/bin/bash

OutdatedPackagesNumber=$(brew outdated | wc -l)
echo "🍺 Outdated brew packages: ${OutdatedPackagesNumber}" > /etc/motd

cronを設定する

crontab -e で以下の内容を入力し、保存します。時間は任意です。

0 2 * * * brew update && /Users/{{ユーザー名}}/.local/bin/brew-outdated-packages.sh 2>/tmp/brew-outdated-packages-error_$(date +%Y%m%d_%H%M%S)

これで毎晩2時時点のoutdatedなパッケージの数が /etc/motd に書き込まれます。ログイン時は /etc/motd を表示するだけなので硬直はありません。別に /etc/motd である必要はなくて、別のファイルに書き出して .bashrc でそのファイルを cat するんでもよさそうです。

追記

brew udpate もcronで自動実行しないといけないんでした。追記しました。