linux

Linuxのシェルログイン時、牛に格言を喋らせる

投稿日:2019年8月19日

sshコマンドやteratermでLinuxにログインした時、在り来たりなプロンプトじゃなくて何か役に立つ情報が表示されたら、開発プロジェクトの雰囲気もちょっと潤うかも知れません。

Linuxコマンド格言を表示してくれる「fortune」コマンドのテキストをASCIIアートで牛が喋る「cowsay」コマンドに喋らせる伝統芸能をやってみます。

格言じゃプロジェクトは和まないかも知れませんが、fortuneの替わりにプロジェクト分析結果を喋らせると実用性が出てくるので、その前にまず基本的な芸能からいきます。

cowsay、fortuneをインストール

両方ともepelリポジトリに有るのでリポジトリ登録していない場合はyum install epel-releaseしておきます。

# yum provides \*/cowsay

cowsay-3.04-4.el7.noarch : Configurable speaking/thinking cow
リポジトリー        : epel
一致          :
ファイル名    : /usr/bin/cowsay
ファイル名    : /usr/share/cowsay

# yum provides \*/fortune

fortune-mod-1.99.1-17.el7.x86_64 : A program which will display a fortune
リポジトリー        : epel
一致          :
ファイル名    : /usr/bin/fortune
ファイル名    : /usr/share/games/fortune
# yum install cowsay
# yum install fortune-mod

動作確認

fortune。ランダムで格言が表示される。

# fortune
Audacity, and again, audacity, and always audacity.
                -- G.J. Danton

cowsay。引数を牛のASCII ARTに喋らせる。

# cowsay 'Hello World!'
 ______________
< Hello World! >
 --------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

fortuneの格言をcowsayにパイプすることで牛に喋らせる。

# fortune | cowsay
 ________________________________________
/ I fell asleep reading a dull book, and \
| I dreamt that I was reading on, so I   |
\ woke up from sheer boredom.            /
 ----------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

cowsayは牛だけでなく様々なキャラクターに喋らせることが出来ます。-lで一覧を確認。

# cowsay -l
Cow files in /usr/share/cowsay:
beavis.zen blowfish bong bud-frogs bunny cheese cower default dragon
dragon-and-cow elephant elephant-in-snake eyes flaming-sheep ghostbusters
head-in hellokitty kiss kitty koala kosh luke-koala mech-and-cow meow milk
moofasa moose mutilated ren satanic sheep skeleton small sodomized
stegosaurus stimpy supermilker surgery telebears three-eyes turkey turtle
tux udder vader vader-koala www

試しにゴーストバスターズのロゴに喋らせます。-fでキャラクタ指定。

# fortune | cowsay -f ghostbusters
 __________________________________
/ Kissing a fish is like smoking a \
\ bicycle.                         /
 ----------------------------------
          \
           \
            \          __---__
                    _-       /--______
               __--( /     \ )XXXXXXXXXXX\v.
             .-XXX(   O   O  )XXXXXXXXXXXXXXX-
            /XXX(       U     )        XXXXXXX\
          /XXXXX(              )--_  XXXXXXXXXXX\
         /XXXXX/ (      O     )   XXXXXX   \XXXXX\
         XXXXX/   /            XXXXXX   \__ \XXXXX
         XXXXXX__/          XXXXXX         \__---->
 ---___  XXX__/          XXXXXX      \__         /
   \-  --__/   ___/\  XXXXXX            /  ___--/=
    \-\    ___/    XXXXXX              '--- XXXXXX
       \-\/XXX\ XXXXXX                      /XXXXX
         \XXXXXXXXX   \                    /XXXXX/
          \XXXXXX      >                 _/XXXXX/
            \XXXXX--__/              __-- XXXX/
             -XXXXXXXX---------------  XXXXXX-
                \XXXXXXXXXXXXXXXXXXXXXXXXXX/
                  ""VXXXXXXXXXXXXXXXXXXV""

外国人のAAを見ると円マークはバックスラッシュのままみたいなぁとしみじみ。

シェルログイン時に表示する設定

シェルログイン時に表示するメッセージを登録するのは/etc/motd(Message Of The Day)ですが、motdのファイル内容が文字列として読み込まれて表示されるだけなのでコマンドの実行は出来ません。

替わりにシェル取得時に実行される/etc/profile.d配下にmotd.shを作っておきます。

# echo 'fortune | cowsay -f dragon-and-cow' > /etc/profile.d/motd.sh

準備が出来ました。シェルログインした結果。

Last login: Sun Aug 18 00:16:30 2019 from 192.168.0.5
 ___________________________________
/ lighthouse, n.:                      \
|                                      |
| A tall building on the seashore in   |
| which the government                 |
|                                      |
| maintains a lamp and the friend of a |
\ politician.                          /
 -----------------------------------
                       \                    ^    /^
                        \                  / \  // \
                         \   |\___/|      /   \//  .\
                          \  /O  O  \__  /    //  | \ \           *----*
                            /     /  \/_/    //   |  \  \          \   |
                            @___@`    \/_   //    |   \   \         \/\ \
                           0/0/|       \/_ //     |    \    \         \  \
                       0/0/0/0/|        \///      |     \     \       |  |
                    0/0/0/0/0/_|_ /   (  //       |      \     _\     |  /
                 0/0/0/0/0/0/`/,_ _ _/  ) ; -.    |    _ _\.-~       /   /
                             ,-}        _      *-.|.-~-.           .~    ~
            \     \__/        `/\      /                 ~-. _ .-~      /
             \____(oo)           *.   }            {                   /
             (    (--)          .----~-.\        \-`                 .~
             //__\\  \__ Ack!   ///.----..<        \             _ -~
            //    \\               ///-._ _ _ _ _ _ _{^ - - - - ~
[naka@spock ~]$

毎回喋ることが変わるので飽きませんね。

このままだとただの娯楽、有益なWeb APIを使えば実用的になる

冒頭に言ったとおりfortuneだと英語の勉強くらいにしかならないかも知れません。

fortuneの替わりにSonarQubeやGitLabのWeb APIで開発プロジェクトの分析結果を取得して整形、表示するようにしておけば、より益の有るログインメッセージになります。

まぁcowsayに喋らせる必要も無いかも知れませんけど・・・。遊び心は有ってもいいんじゃないかと。

後日に続きます。

-linux
-,

執筆者:

関連記事

テキストファイル内の改行コード差異を見つけるワンライナー

ファイル内容は同じなのにdiffで違いが出るWeb上でソースレビューする時に同じ内容の行なのに差分が出て紛らわしい これらの原因はWindows、Mac、Linuxが入り混じった開発環境にあるかも知れ …

podmanをdockerとして使う

docker代替としてRHEL系OSにデフォルト搭載されたpodmanは当初、dockerを期待している他周辺ソフトウェア(docker-componseやgitlab-runnerなど)と素直に通信 …

CentOS8にPostgreSQL12をインストールする手順

以前CentOS7にPostgreSQL11をインストールしてSQL実行しました。 One IT Thing  1 Pocket開発用PostgreSQLをCentOSにインストールしてSQ …

Android版ChromiumをVirtualBoxにインストールしたUbuntuでビルドしてみる

「Chromium」はChromeの開発ソースが公開されたプロジェクトです。 www.chromium.org  1 UserGet the Code: Checkout, Build, & …

Termuxで動作が確認できたターミナルゲーム4つ

Android端末をroot化せずにLinux環境を独自構築する神アプリ「Termux」。 play.google.comhttps://play.google.com/store/apps/deta …

 

shingo.nakanishi
 

東京在勤、1977年生まれ、IT職歴2n年、生涯現役技術者を目指しています。健康第一。