0887 371 498 support@itservice-bg.net
06.01.2017 · Самуил Арсов · Linux commands, Ubuntu

Цветен ASCII банер в Bash с toilet и figlet

За мен терминалът винаги трябва да е класически — черен с бели букви, без излишни цветове, без прозрачност и така нататък. Обаче системните администратори също имат душа и от време на време имат нужда от малко арт визия, дори и тя да е в ASCII формат. Има една малко известна програмка в хранилищата на Ubuntu — казва се toilet:

sudo apt-get install toilet

На мен специално ми харесаха само тези варианти:

toilet -F crop telehost.bg
toilet -F gay telehost.bg
toilet -F metal telehost.bg
toilet -F border telehost.bg
toilet -f mono9 -F metal telehost.bg
toilet -f bigmono9 -F crop telehost.bg

От които се получи това:

toilet — цветни ASCII банери в Bash терминал

Защо изобщо е полезно

Всъщност често, когато работя, прескачам от терминал на една машина в терминал на друга. Понякога в бързането стават грешки — команда, писана за едната машина, се озовава на другата. Затова на машините, в които влизам по-често, веднага след логването изскача банер с името им. Хем е забавно, хем върши работа: погледът хваща името, преди пръстите да са започнали.

Банер при всяко влизане

За собствения потребител редът се добавя най-отдолу в ~/.bashrc:

toilet -f bigmono9 -F metal MyBanner

След което излезте с exit и влезте пак в терминала.

На сървър, където банерът трябва да се вижда от всички при влизане по SSH, мястото е MOTD:

sudo nano /etc/update-motd.d/00-banner
#!/bin/sh
toilet -f bigmono9 -F metal "$(hostname)"
sudo chmod +x /etc/update-motd.d/00-banner

Използването на $(hostname) вместо име на ръка значи, че един и същ файл върши работа на всички машини и никога не показва грешно име след клониране на виртуалка.

Шрифтове и филтри

Наличните шрифтове се изброяват така:

ls /usr/share/figlet/
showfigfonts | less

Филтърът е това, което добавя цвета или рамката — -F metal, -F crop, -F border, -F gay, а може и няколко наведнъж, разделени с двоеточие: -F metal:border.

figlet — по-старият роднина

toilet е наследник на figlet и ползва същите шрифтове. figlet е по-разпространен и се среща предварително инсталиран по-често, но няма филтри за цвят:

sudo apt-get install figlet
figlet -f slant MyServer

Едно предупреждение

На машина, до която се стига през автоматизация — скриптове, cron, rsync по SSH — банерът в .bashrc може да е повече от украшение. Някои инструменти четат изхода на сесията и допълнителните редове ги объркват. Затова: банер в .bashrc само за интерактивни сесии. Условието е кратко и си струва:

case $- in
  *i*) toilet -f bigmono9 -F metal "$(hostname)" ;;
esac