motd-dynamic
· 3.6 KiB · Text
原始文件
#!/bin/bash
# Dynamic MOTD generator
USER=`whoami`
HOSTNAME=`uname -n`
NET_IF='eth0'
IP4=`ip a show $NET_IF | grep 'inet ' | awk '{print $2}'i | tr -d '\n'`
IP6=`ip a show $NET_IF | grep 'inet6 ' | head -1 | awk '{print $2}' | tr -d '\n'`
ROOT_USED=`df -Ph | grep ' /$' | awk '{print $3}' | tr -d '\n'`
ROOT_TOTAL=`df -Ph | grep ' /$' | awk '{print $2}' | tr -d '\n'`
#HDD_USED=`zpool iostat | grep hdd | awk '{print $2}' | tr -d '\n'`
#HDD_TOTAL=`df -Ph | grep 'hdd ' | awk '{print $2}' | tr -d '\n'`
SSD_USED=`df -Ph | grep 'nextcloud ' | awk '{print $3}' | tr -d '\n'`
SSD_TOTAL=`df -Ph | grep 'nextcloud ' | awk '{print $2}' | tr -d '\n'`
MEMORY1=`free -t -m | grep "Mem" | awk '{print $3" MB";}'`
MEMORY2=`free -t -m | grep "Mem" | awk '{print $2" MB";}'`
PSA=`ps -Afl | wc -l`
# time of day
HOUR=$(date +"%H")
if [ $HOUR -lt 12 -a $HOUR -ge 0 ]
then TIME="morning"
elif [ $HOUR -lt 17 -a $HOUR -ge 12 ]
then TIME="afternoon"
else
TIME="evening"
fi
#System uptime
uptime=`cat /proc/uptime | cut -f1 -d.`
upDays=$((uptime/60/60/24))
upHours=$((uptime/60/60%24))
upMins=$((uptime/60%60))
upSecs=$((uptime%60))
#System load
LOAD1=`cat /proc/loadavg | awk {'print $1'}`
LOAD5=`cat /proc/loadavg | awk {'print $2'}`
LOAD15=`cat /proc/loadavg | awk {'print $3'}`
# Failed logins
#LASTLOGIN=$(cat /var/local/lastlogin)
#LASTLOGIN_PRETTY=$(date +'%d %B %T' --date "$LASTLOGIN")
#FAILS=$(journalctl -u sshd --since "$LASTLOGIN" | egrep "Failed|Invalid" | wc -l)
# - Failed logins...........: $FAILS since $LASTLOGIN_PRETTY
#Podman containers status
if [ -f "/var/local/podman-status" ]; then
PODMAN_LAST_UPDATE=$(head -1 /var/local/podman-status)
TODAY=$(date --date="Today 00:00" +%s)
if [[ "$TODAY" == "$PODMAN_LAST_UPDATE" ]]; then
PODMAN_LAST_UPDATE_DAY='today'
else
DIFF=$(echo "${TODAY}-${PODMAN_LAST_UPDATE}" | bc)
if [[ "$DIFF" == 86400 ]];then
PODMAN_LAST_UPDATE_DAY='yesterday'
else
D=$(echo "${DIFF}/86400" | bc)
if [[ "$D" -lt 7 ]]; then
PODMAN_LAST_UPDATE_DAY="$(date --date=@$PODMAN_LAST_UPDATE +%A)"
else
PODMAN_LAST_UPDATE_DAY="$D days ago"
fi
fi
fi
fi
echo "
Good $TIME $USER"
echo "
===========================================================================
- Hostname................: $HOSTNAME
- IPv4..................: $IP4
- IPv6..................: $IP6
- Release.................: `cat /etc/redhat-release`
- Users...................: `users | wc -w` user(s) logged in
===========================================================================
- Current user............: $USER
- CPU usage...............: $LOAD1, $LOAD5, $LOAD15 (1, 5, 15 min)
- Memory used.............: $MEMORY1 / $MEMORY2
- Swap in use.............: `free -m | tail -n 1 | awk '{print $3}'` MB
- Processes...............: $PSA running
- System uptime...........: $upDays days $upHours hours $upMins minutes $upSecs seconds
- Usage of / .............: $ROOT_USED / $ROOT_TOTAL
- Usage of /opt...........: $SSD_USED / $SSD_TOTAL"
[ -f "/var/local/podman-status" ] && tail -n +2 /var/local/podman-status | sed "s/WHEN/${PODMAN_LAST_UPDATE_DAY}/"
printf "\
===========================================================================\n"
cat /var/local/nc-backup-status
printf "\n"
if [[ "$(curl -s localhost:8080/status.php | jq '.maintenance')" == "true" ]]; then
echo -e "
** Nextcloud in maintenance mode **\n\n"
fi
if command -v mail > /dev/null && mail -e; then echo "You have mail."; fi
if command -v tmux > /dev/null && tmux list-sessions > /dev/null; then echo "TMUX session running."; fi
1 | #!/bin/bash |
2 | |
3 | # Dynamic MOTD generator |
4 | |
5 | USER=`whoami` |
6 | HOSTNAME=`uname -n` |
7 | NET_IF='eth0' |
8 | IP4=`ip a show $NET_IF | grep 'inet ' | awk '{print $2}'i | tr -d '\n'` |
9 | IP6=`ip a show $NET_IF | grep 'inet6 ' | head -1 | awk '{print $2}' | tr -d '\n'` |
10 | ROOT_USED=`df -Ph | grep ' /$' | awk '{print $3}' | tr -d '\n'` |
11 | ROOT_TOTAL=`df -Ph | grep ' /$' | awk '{print $2}' | tr -d '\n'` |
12 | #HDD_USED=`zpool iostat | grep hdd | awk '{print $2}' | tr -d '\n'` |
13 | #HDD_TOTAL=`df -Ph | grep 'hdd ' | awk '{print $2}' | tr -d '\n'` |
14 | SSD_USED=`df -Ph | grep 'nextcloud ' | awk '{print $3}' | tr -d '\n'` |
15 | SSD_TOTAL=`df -Ph | grep 'nextcloud ' | awk '{print $2}' | tr -d '\n'` |
16 | |
17 | MEMORY1=`free -t -m | grep "Mem" | awk '{print $3" MB";}'` |
18 | MEMORY2=`free -t -m | grep "Mem" | awk '{print $2" MB";}'` |
19 | PSA=`ps -Afl | wc -l` |
20 | |
21 | # time of day |
22 | HOUR=$(date +"%H") |
23 | if [ $HOUR -lt 12 -a $HOUR -ge 0 ] |
24 | then TIME="morning" |
25 | elif [ $HOUR -lt 17 -a $HOUR -ge 12 ] |
26 | then TIME="afternoon" |
27 | else |
28 | TIME="evening" |
29 | fi |
30 | |
31 | #System uptime |
32 | uptime=`cat /proc/uptime | cut -f1 -d.` |
33 | upDays=$((uptime/60/60/24)) |
34 | upHours=$((uptime/60/60%24)) |
35 | upMins=$((uptime/60%60)) |
36 | upSecs=$((uptime%60)) |
37 | |
38 | #System load |
39 | LOAD1=`cat /proc/loadavg | awk {'print $1'}` |
40 | LOAD5=`cat /proc/loadavg | awk {'print $2'}` |
41 | LOAD15=`cat /proc/loadavg | awk {'print $3'}` |
42 | |
43 | # Failed logins |
44 | #LASTLOGIN=$(cat /var/local/lastlogin) |
45 | #LASTLOGIN_PRETTY=$(date +'%d %B %T' --date "$LASTLOGIN") |
46 | #FAILS=$(journalctl -u sshd --since "$LASTLOGIN" | egrep "Failed|Invalid" | wc -l) |
47 | # - Failed logins...........: $FAILS since $LASTLOGIN_PRETTY |
48 | |
49 | #Podman containers status |
50 | if [ -f "/var/local/podman-status" ]; then |
51 | PODMAN_LAST_UPDATE=$(head -1 /var/local/podman-status) |
52 | TODAY=$(date --date="Today 00:00" +%s) |
53 | if [[ "$TODAY" == "$PODMAN_LAST_UPDATE" ]]; then |
54 | PODMAN_LAST_UPDATE_DAY='today' |
55 | else |
56 | DIFF=$(echo "${TODAY}-${PODMAN_LAST_UPDATE}" | bc) |
57 | if [[ "$DIFF" == 86400 ]];then |
58 | PODMAN_LAST_UPDATE_DAY='yesterday' |
59 | else |
60 | D=$(echo "${DIFF}/86400" | bc) |
61 | if [[ "$D" -lt 7 ]]; then |
62 | PODMAN_LAST_UPDATE_DAY="$(date --date=@$PODMAN_LAST_UPDATE +%A)" |
63 | else |
64 | PODMAN_LAST_UPDATE_DAY="$D days ago" |
65 | fi |
66 | fi |
67 | fi |
68 | fi |
69 | |
70 | echo " |
71 | Good $TIME $USER" |
72 | |
73 | echo " |
74 | =========================================================================== |
75 | - Hostname................: $HOSTNAME |
76 | - IPv4..................: $IP4 |
77 | - IPv6..................: $IP6 |
78 | - Release.................: `cat /etc/redhat-release` |
79 | - Users...................: `users | wc -w` user(s) logged in |
80 | =========================================================================== |
81 | - Current user............: $USER |
82 | - CPU usage...............: $LOAD1, $LOAD5, $LOAD15 (1, 5, 15 min) |
83 | - Memory used.............: $MEMORY1 / $MEMORY2 |
84 | - Swap in use.............: `free -m | tail -n 1 | awk '{print $3}'` MB |
85 | - Processes...............: $PSA running |
86 | - System uptime...........: $upDays days $upHours hours $upMins minutes $upSecs seconds |
87 | - Usage of / .............: $ROOT_USED / $ROOT_TOTAL |
88 | - Usage of /opt...........: $SSD_USED / $SSD_TOTAL" |
89 | |
90 | [ -f "/var/local/podman-status" ] && tail -n +2 /var/local/podman-status | sed "s/WHEN/${PODMAN_LAST_UPDATE_DAY}/" |
91 | printf "\ |
92 | ===========================================================================\n" |
93 | |
94 | |
95 | cat /var/local/nc-backup-status |
96 | |
97 | |
98 | printf "\n" |
99 | |
100 | if [[ "$(curl -s localhost:8080/status.php | jq '.maintenance')" == "true" ]]; then |
101 | echo -e " |
102 | ** Nextcloud in maintenance mode **\n\n" |
103 | fi |
104 | |
105 | |
106 | if command -v mail > /dev/null && mail -e; then echo "You have mail."; fi |
107 | |
108 | if command -v tmux > /dev/null && tmux list-sessions > /dev/null; then echo "TMUX session running."; fi |