I got a Raspberry Pi for my birthday last year, and this year I’ve been really playing with it.  I mostly got it to because I want an easy place to run my Node.js scripts, and spend more time learning a Linux environment.  I’ve really been enjoying having a Pi in the house to play with, but the most impressive thing to me is the uptime of having a system that does so little.  Today started with me wondering why on my MacBook I open the terminal and the uptime is already present, but when I log into my pi, the uptime needs to be typed.
It was time to change that.
I quickly discovered by Googling a bit that this welcome message was called “The Message of the Day”, or “motd” for short. The raspberry pi website has a great forum post about how to customize this to something that I really wanted. The post is “Custom MOTD - Message of the Day”. Look how nice this logon message is: 
However, by following the instructions on this page I had one major problem.  My colour scheme for my command prompt disappeared. Additionally yanewby posts that there may be a better place to have this run.  Well I found that and I wanted to post my findings.
How to update the message of the day
My Pi is also in a headless conifguration, meaning I just SSH into it to use it.  So there are a number of files that matter here.  I ended up not using the ~/.bash_profile which the user specified in his post.  Instead there are a few other files
- /etc/motd - This is a static file that is displayed. If you just want a static message, type it in here, and it’ll be posted every time you log in
 - /etc/update-motd.d - this is a folder full of scripts to be run
 - /var/run/motd.dynamic - this appears to be output of the last run of the above
 
In the /etc/update-motd.d folder, there are a number of executible files.  All of these are run as long as they are marked as executible.  I had one called `10-unamed`. The files run in alphabetical order, so if you added an `01-myScript` it would run before 10-unamed, and if it was `11-myScript` it would run after 10-unamed. I ended up backing up this file to my ~ directory, and editing it.
If you do make a new file, make sure you make it executable with the following command:
chmod +x filename
I had to edit some of the script from the original user to get what I wanted. My changes included:
- I had to specify which shell to run it with, so my first line is "#!/bin/bash"
 - I also realized that the terminal hadn’t been set up for colour, so to get colour I had to add another line “export TERM=xterm-256color"
 - The rest of the script was updated to
- Put a space between the hr’s, min’s, & sec’s of uptime.
 - Change when the colours switched
 - add my device name to the uname command
 - Supply my actual disk to get the free space
 - change the code to get my LAN ip address
 - Change the code to get my local weather (I don’t live in the UK!)
 
 
You can see my code here:
#!/bin/bash
export TERM=xterm-256color
let upSeconds="$(/usr/bin/cut -d. -f1 /proc/uptime)" 
let secs=$((${upSeconds}%60))
let mins=$((${upSeconds}/60%60))
let hours=$((${upSeconds}/3600%24))
let days=$((${upSeconds}/86400))
UPTIME=`printf "%d days, %02dh %02dm %02ds" "$days" "$hours" "$mins" "$secs"`
 
# get the load averages read one five fifteen
rest < /proc/loadavg
 
echo "$(tput setaf 2)
    .~~. .~~.             $(tput sgr0)`date +"%A, %e %B %Y, %r"`$(tput setaf 2)
  '. \ ' ' / .'           $(tput sgr0)`uname -snrmo`$(tput setaf 1)
   .~ .~~~..~.
  : .~.'~'.~. :           $(tput sgr0)Uptime.............: ${UPTIME}$(tput setaf 1)
   ~ ( ) ( ) ~            $(tput sgr0)Memory.............: `cat /proc/meminfo | grep MemFree | awk {'print $2'}`kB (Free) / `cat /proc/meminfo | grep MemTotal | awk {'print $2'}`kB (Total)$(tput setaf 1)
( : '~'.~.'~' : )         $(tput sgr0)Load Averages......: ${one}, ${five}, ${fifteen} (1, 5, 15 min)$(tput setaf 1)
  ~ .~ ( ) ~. ~           $(tput sgr0)Running Processes..: `ps ax | wc -l | tr -d " "`$(tput setaf 1)
   ( : '~' : )            $(tput sgr0)Free Disk Space....: `df -Pk | grep -E '^/dev/root' | awk '{ print $4 }'`k (`df -Pk | grep -E '^/dev/root' | awk '{ print $5 }'` used) on /dev/root$(tput setaf 1)
   '~ .~~~. ~'            $(tput sgr0)IP Addresses.......: LAN: `/sbin/ifconfig eth0 | /bin/grep "inet " | awk '{ print $2 }'` WAN: `wget -q -O - http://icanhazip.com/ | tail`$(tput setaf 1)
       '~'                $(tput sgr0)Victoria weather...: `curl -s "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EN|CA|VICTORIA" | sed -n '/Currently:/ s/.*: \(.*\): \([0-9]*\)\([CF]\).*/\2°\3, \1/p'`
 That’s all there is to it. Make sure it’s executable, and now disconenct and reconnect and you should see your new message of the day. The above produces this: