Bash: Mail Checker

Dnes som sa rozhodol, že budem v pravidelných intervaloch “vypúšťať” do sveta svoje vychytávky v podobe bash scriptov (prípadne rôzne iné scripty). Spomínaný interval som si ešte presne nešpecifikoval, ale budem sa snažiť publikovať čo najčastejšie ( i keď som časovo dosť vyťažený).


Script, o ktorý sa chcem dnes s vami podeliť, síce toho nerobí moc, ale pre mňa osobne je to príjemný doplnok na mojom shell accounte.

Pekné privítanie?

Keďže som pri práci na PC dosť zaťažený na Eye Candy, hľadal som spôsob ako skrášliť dosť fádne privítanie na UNIXových systemóch. Na shell sa samozrejme ako inak prihlasujem cez ssh, a po príhlasení na mňa síce vyskočí pekne spracovaný welcome screen, ale niečo tomu chýba. Vždy som túžil mať systém ako z Hollywoodských filmov, kde po konzole behajú rôzne farebné texty, typu: “checking bla bla bla”. S týmto scriptom som to docielil aspoň čiastočne:

#!/bin/bash
#
# Mail Checker by TommyHot
# Licence : GNU GPL
#
###################################

# Colors
RED=’\E[31m'
GREEN='\E[32m'
# Username
USER='tommyhot'

# Checks for current user
if whoami | grep $USER &> /dev/null; then
echo -n "Checking for user "

for i in `seq 1 3`; do
sleep 0.7
echo -n "."
done

echo " done"
echo -e -n $GREEN"User OK: "
whoami
tput sgr0;
sleep 0.5

else

echo -n "Checking for user "

for i in `seq 1 3`; do
sleep 0.7
echo -n "."
done

echo " done"
echo -e -n $RED"User ERROR: "
whoami
tput sgr0;
sleep 0.5

echo "You can't run this script, because you are not $USER!"
exit
fi

# I've got an email
if grep Received: ~/Maildir/new/* &> /dev/null; then
echo ""
echo -e -n $GREEN"Hi "
whoami
echo -e "you HAVE recieved a new mail/mails from: "
cat ~/Maildir/new/* | grep "From: " | cut -b 7-
tput sgr0;

# Want to read it or not?
until [ "$MUTT" = "yes" -o "$MUTT" = "no" ];do
echo -n “Do you want to view read the mail? (yes/no): “
read MUTT;
done

# Read it
if [ "$MUTT" = "yes" ]; then
mutt
else
echo “You didn’t want to read it. Have a nice day.”
fi

else

echo “”
echo -e -n $RED”Hi “
whoami
echo -e “you HAVE NOT recieved any mail! Have a nice day.”
tput sgr0;

fi
exit

Inštalácia

V home zložke som si vytvoril zložku bin:

mkdir ~/bin

kde je uložený tento script pod názvom mailchecker. Nastavil som práva pre spúštanie pre všetkých užívateľov:

chmod a+x mailchecker

Aby som mohol spustiť script z hociktorého priečinku v ktorom sa práve nachádzam a ešte ho aj spustiť hneď po prihlásení, musel som do ~/.bash_profile pridať nasledujúce riadky:

# set PATH so it includes user’s private bin if it exists

if [ -d ~/bin ] ; then
PATH=~/bin:”${PATH}”
fi

# check for new emails
~/bin/mailcheck

Prvá čast hovorí bash interpreteru, aby sa pri spúštaní príkazov pozeral aj do tejto zložky a druhá časť zabezpečí spustenie scriptu hneď po nalogovaní sa do systému.

Výsledok

Takto vyzerá nasledujúci script v praxi:

P.S. Citlivé údaje boli scenzurované.

Snáď vám padne tento script vhod a budete sa z neho tešiť minimálne tak ako ja :D

P.S2: Komentáre v kódoch píšem zásadne v angličtine, to len aby ste si nemysleli že som plagiátor :)
P.S3: Do budúcna, pokiaľ neuvediem inak, všetko je pod GPL licenciou, čize s kódom si môžte robiť prakticky čokolvek, ale bol by som rád, keby nick autora (čiže mňa) ponecháte ;)

Pridať komentár