forked from getminera/minera
-
Notifications
You must be signed in to change notification settings - Fork 0
/
motd.sh
132 lines (102 loc) · 4.07 KB
/
motd.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/bin/bash
clear
function color (){
echo "\e[$1m$2\e[0m"
}
function extend (){
local str="$1"
let spaces=60-${#1}
while [ $spaces -gt 0 ]; do
str="$str "
let spaces=spaces-1
done
echo "$str"
}
function center (){
local str="$1"
let spacesLeft=(78-${#1})/2
let spacesRight=78-spacesLeft-${#1}
while [ $spacesLeft -gt 0 ]; do
str=" $str"
let spacesLeft=spacesLeft-1
done
while [ $spacesRight -gt 0 ]; do
str="$str "
let spacesRight=spacesRight-1
done
echo "$str"
}
function sec2time (){
local input=$1
if [ $input -lt 60 ]; then
echo "$input seconds"
else
((days=input/86400))
((input=input%86400))
((hours=input/3600))
((input=input%3600))
((mins=input/60))
local daysPlural="s"
local hoursPlural="s"
local minsPlural="s"
if [ $days -eq 1 ]; then
daysPlural=""
fi
if [ $hours -eq 1 ]; then
hoursPlural=""
fi
if [ $mins -eq 1 ]; then
minsPlural=""
fi
echo "$days day$daysPlural, $hours hour$hoursPlural, $mins minute$minsPlural"
fi
}
borderColor=35
headerLeafColor=32
headerRaspberryColor=31
greetingsColor=36
statsLabelColor=33
borderLine="━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
borderTopLine=$(color $borderColor "┏$borderLine┓")
borderBottomLine=$(color $borderColor "┗$borderLine┛")
borderBar=$(color $borderColor "┃")
borderEmptyLine="$borderBar $borderBar"
# Header
header="$borderTopLine\n$borderEmptyLine\n"
header="$header$borderBar$(color $headerRaspberryColor " /\/\ (_)_ __ ___ _ __ __ _ ")$borderBar\n"
header="$header$borderBar$(color $headerRaspberryColor " / \| | '_ \ / _ \ '__/ _\` | ")$borderBar\n"
header="$header$borderBar$(color $headerRaspberryColor " / /\/\ \ | | | | __/ | | (_| | ")$borderBar\n"
header="$header$borderBar$(color $headerRaspberryColor " \/ \/_|_| |_|\___|_| \__,_| ")$borderBar"
me=$(whoami)
# Greetings
greetings="$borderBar$(color $greetingsColor "$(center "Welcome back, $me!")")$borderBar\n"
greetings="$greetings$borderBar$(color $greetingsColor "$(center "$(date +"%A, %d %B %Y, %T")")")$borderBar"
# System information
read loginFrom loginIP loginDate <<< $(last $me --time-format iso -2 | awk 'NR==2 { print $2,$3,$4 }')
# TTY login
if [[ $loginDate == - ]]; then
loginDate=$loginIP
loginIP=$loginFrom
fi
if [[ $loginDate == *T* ]]; then
login="$(date -d $loginDate +"%A, %d %B %Y, %T") ($loginIP)"
else
# Not enough logins
login="None"
fi
label1="$(extend "$login")"
label1="$borderBar $(color $statsLabelColor "Last Login....:") $label1$borderBar"
uptime="$(sec2time $(cut -d "." -f 1 /proc/uptime))"
uptime="$uptime ($(date -d "@"$(grep btime /proc/stat | cut -d " " -f 2) +"%d-%m-%Y %H:%M:%S"))"
label2="$(extend "$uptime")"
label2="$borderBar $(color $statsLabelColor "Uptime........:") $label2$borderBar"
label3="$(extend "$(free -m | awk 'NR==2 { printf "Total: %sMB, Used: %sMB, Free: %sMB",$2,$3,$4; }')")"
label3="$borderBar $(color $statsLabelColor "Memory........:") $label3$borderBar"
label4="$(extend "$(df -h ~ | awk 'NR==2 { printf "Total: %sB, Used: %sB, Free: %sB",$2,$3,$4; }')")"
label4="$borderBar $(color $statsLabelColor "Home space....:") $label4$borderBar"
label5="$(extend "$(ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | cut -d/ -f1)")"
label5="$borderBar $(color $statsLabelColor "System IP.....:") $label5$borderBar"
stats="$label1\n$label2\n$label3\n$label4\n$label5"
# Print motd
echo -e "$header\n$borderEmptyLine\n$greetings\n$borderEmptyLine\n$stats\n$borderEmptyLine\n$borderBottomLine"
echo -e "\nTo use Minera open your PC browser and connect to the system IP you find above.\n\n"