やったこと
・sshログイン時にスライムをランダムで出せるようになりました。
・/etc/motdは修正せず、シェルの設定ファイル(.zshrc)の修正で出せるようにしてみました。
・メッセージ欄を表示出来るようにしました。(2018/9/29追記)
やるに至った背景
以下記事を見てスライムを出せることを知り、ランダムに表示することも可能か試してみたくなりました。
(知ったときはほんとビックリしました...スライム、感動です...)
https://qiita.com/tu-kun/items/d38452161bfb9da54bcd
試した環境
・Ubuntu 18.04
・zsh 5.4.2-3ubuntu3.1
手順
1. まずシェルスクリプト等を配置するディレクトリを作成します。
mkdir -p ~/DQ/text
※この後、DQ直下にシェルスクリプトを、text直下にテキストファイルを配置します
2. 事前にスライムのテキストファイルを取得します。
※他にDQ2の王子・王女もありましたが今回はスライムだけにしました。元データはこちら。
・スライム
curl -s https://gist.githubusercontent.com/makocchi-git/9775443/raw/02e67ad144bd9ab5b71472e46e9a553d49f413d4/slime.txt > ~/DQ/text/slime.txt
・ベス
curl -s https://gist.githubusercontent.com/makocchi-git/9775443/raw/0b824da8a3ecb0fd96b1e646061dc8493d4c36b4/slime-beth.txt > ~/DQ/text/slime-beth.txt
・メタル
curl -s https://gist.githubusercontent.com/makocchi-git/9775443/raw/6747aa4a65e4293201289899931fe04472c5cfcf/metal-slime.txt > ~/DQ/text/metal-slime.txt
・バブル
curl -s https://gist.githubusercontent.com/makocchi-git/9775443/raw/74e7161b1455d300e2c6c2bd84c106baf1a89443/bubble-slime.txt > ~/DQ/text/bubble-slime.txt
・はぐれ
curl -s https://gist.githubusercontent.com/makocchi-git/9775443/raw/67ee6bdde75c987cc9ef91fce35150685d8163b9/hagure-metal.txt > ~/DQ/text/hagure-metal.txt
・スライム、ベス、メタル3種盛り
curl -s https://gist.githubusercontent.com/makocchi-git/9775443/raw/746887fbc6e1a7c6b120af0abcfe58701e8b4550/slime-allstar.txt > ~/DQ/text/slime-allstar.txt
3. 表示するためのシェルスクリプト(slime_header)を作成します。
※なおスライムの出現率は適当です。 (スライム=40%、ベス=25%、バブル=20%、メタル=10%、はぐれ=4%、3種盛り=1%)
※2018/9/29 メッセージ欄を表示出来るようにしました(メッセージ欄が不要な場合は、4行目にあるPROMPT=ONをOFFにしてください)
vim ~/DQ/slime_header.sh
#!/bin/bash
#プロンプトを非表示にする際はOFFにしてください
PROMPT=ON
#PROMPT=OFF
#スライムテキストデータの配置場所
TEXTDIR=~/DQ/text
#ランダムで値を取得(0〜99の範囲)
NUM=$(($RANDOM % 100))
#メッセージ欄表示関数 (PROMPT=ONの場合のみ実施)
function prompt () {
#第一引数: モンスター名
#第二引数: 余白(タブ)
echo -e "\U250F\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2513"
#スライムオールスターのみ3桁表示
if [ $1 != "allstar" ] ; then
echo -e "\U2503 ${1}が あらわれた! ${2}\U2503"
else
echo -e "\U2503 スライムが あらわれた! \t\t\t\U2503"
echo -e "\U2503 スライムベスが あらわれた! \t\t\t\U2503"
echo -e "\U2503 メタルスライムが あらわれた! \t\t\U2503"
fi
echo -e "\U2517\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U2501\U251B"
}
#スライム 40%の確率 (RANGE: 0-39)
if [ $NUM -lt 40 ]; then
sed -e 's/^/\t/g' $TEXTDIR/slime.txt
[ $PROMPT = "ON" ] && prompt "スライム" "\t\t\t"
#ベス 25%の確率 (RANGE: 40-64)
elif [ $NUM -lt 65 ]; then
sed -e 's/^/\t/g' $TEXTDIR/slime-beth.txt
[ $PROMPT = "ON" ] && prompt "スライムベス" "\t\t\t"
#バブル 20%の確率 (RANGE: 65-84)
elif [ $NUM -lt 85 ]; then
cat $TEXTDIR/bubble-slime.txt
[ $PROMPT = "ON" ] && prompt "バブルスライム" "\t\t"
#メタル 10%の確率 (RANGE: 85-94)
elif [ $NUM -lt 95 ]; then
sed -e 's/^/\t/g' $TEXTDIR/metal-slime.txt
[ $PROMPT = "ON" ] && prompt "メタルスライム" "\t\t"
#はぐれ 4%の確率 (RANGE: 95-98)
elif [ $NUM -lt 99 ]; then
cat $TEXTDIR/hagure-metal.txt
[ $PROMPT = "ON" ] && prompt "はぐれメタル" "\t\t\t"
#3種盛り 1%の確率 (RANGE: 99)
elif [ $NUM -eq 99 ]; then
cat $TEXTDIR/slime-allstar.txt
[ $PROMPT = "ON" ] && prompt "allstar"
fi
4.シェルスクリプト(slime_header)に実行権限を付与します。
chmod 744 ~/DQ/slime_header.sh
5. 最後にログインシェル(.zshrc)に以下を追記します。
※.bashの場合は.bashrcに追記すればいけると思います
echo "~/DQ/slime_header.sh" >> ~/.zshrc
6. その後、別ターミナルでsshログインするとスライムが表示されます。
※どのスライムが出るかはログイン時のお楽しみ!!
※2018/9/29 メッセージ欄を表示出来るようにしました(メッセージ欄が不要な場合は、slime_header.shの4行目にあるPROMPT=ONをOFFにしてください)