Last active 1705433129

Dynamic motd

Jarno Rankinen revised this gist 1649959628. Go to revision

1 file changed, 22 insertions, 12 deletions

podman-status

@@ -1,10 +1,20 @@
1 -
2 1 #!/bin/bash
3 2
3 + terminate() {
4 + printf "\n===========================================================================
5 + - Containers running......: (Waiting for first update)\n" > $STATUSFILE
6 + exit 0
7 + }
8 +
9 + trap "terminate" 15
10 +
11 +
4 12 STATUSFILE=/var/local/podman-status
5 13 STATUSFILE_TMP=/tmp/podman-status
6 14
7 15 echo "Starting podman status generator..." | systemd-cat -t podman-status
16 + echo "Waiting 60 seconds before acquiring status"
17 + sleep 60
8 18
9 19 while true; do
10 20 #printf "" > $STATUSFILE_TMP
@@ -17,19 +27,19 @@ while true; do
17 27 printf "===========================================================================
18 28 - Containers running......: $PODMAN_N_RUNNING (updated WHEN at $(date +%H:%M:%S))\n" >> $STATUSFILE_TMP
19 29
20 - for c in ${PODMAN_CONTAINERS[@]}; do
21 - C_NAME=$(podman ps --filter "id=$c" --format "{{.Names}}")
22 - [[ "$(echo $C_NAME | grep -q infra)" == 0 ]]
23 - C_UP=$(podman ps --filter "id=$c" --format "{{.RunningFor}}")
24 - C_STATUS=$(podman ps --filter "id=$c" --format "{{.Status}}")
25 - C_PORTS=$(podman ps --filter "id=$c" --format "{{.Ports}}")
26 - printf "\r\ - .....................: Created $C_UP, $C_STATUS\r - $C_NAME\n" >> $STATUSFILE_TMP
27 - done
30 + for c in ${PODMAN_CONTAINERS[@]}; do
31 + C_NAME=$(podman ps --filter "id=$c" --format "{{.Names}}")
32 + [[ "$(echo $C_NAME | grep -q infra)" == 0 ]]
33 + C_UP=$(podman ps --filter "id=$c" --format "{{.RunningFor}}")
34 + C_STATUS=$(podman ps --filter "id=$c" --format "{{.Status}}")
35 + C_PORTS=$(podman ps --filter "id=$c" --format "{{.Ports}}")
36 + printf "\r\ - .....................: Created $C_UP, $C_STATUS\r - $C_NAME\n" >> $STATUSFILE_TMP
37 + done
28 38 #printf "===========================================================================\n" >> $STATUSFILE_TMP
29 39 cat $STATUSFILE_TMP > $STATUSFILE
30 40 rm -f $STATUSFILE_TMP
31 - echo "Updated podman status @$(date)" | systemd-cat -t podman-status
32 -
33 - sleep 60
41 + #echo "Updated podman status @$(date)" | systemd-cat -t podman-status
42 +
43 + sleep 60
34 44
35 45 done

Jarno Rankinen revised this gist 1646567691. Go to revision

2 files changed, 44 insertions

podman-status(file created)

@@ -0,0 +1,35 @@
1 +
2 + #!/bin/bash
3 +
4 + STATUSFILE=/var/local/podman-status
5 + STATUSFILE_TMP=/tmp/podman-status
6 +
7 + echo "Starting podman status generator..." | systemd-cat -t podman-status
8 +
9 + while true; do
10 + #printf "" > $STATUSFILE_TMP
11 + PODMAN_CONTAINERS=($(podman ps -q))
12 + PODMAN_N_RUNNING=${#PODMAN_CONTAINERS[@]}
13 + UPDATED_DATE=$(date --date="Today 00:00" +%s)
14 + UPDATED=$(date +%s)
15 +
16 + echo "$UPDATED_DATE" > $STATUSFILE_TMP
17 + printf "===========================================================================
18 + - Containers running......: $PODMAN_N_RUNNING (updated WHEN at $(date +%H:%M:%S))\n" >> $STATUSFILE_TMP
19 +
20 + for c in ${PODMAN_CONTAINERS[@]}; do
21 + C_NAME=$(podman ps --filter "id=$c" --format "{{.Names}}")
22 + [[ "$(echo $C_NAME | grep -q infra)" == 0 ]]
23 + C_UP=$(podman ps --filter "id=$c" --format "{{.RunningFor}}")
24 + C_STATUS=$(podman ps --filter "id=$c" --format "{{.Status}}")
25 + C_PORTS=$(podman ps --filter "id=$c" --format "{{.Ports}}")
26 + printf "\r\ - .....................: Created $C_UP, $C_STATUS\r - $C_NAME\n" >> $STATUSFILE_TMP
27 + done
28 + #printf "===========================================================================\n" >> $STATUSFILE_TMP
29 + cat $STATUSFILE_TMP > $STATUSFILE
30 + rm -f $STATUSFILE_TMP
31 + echo "Updated podman status @$(date)" | systemd-cat -t podman-status
32 +
33 + sleep 60
34 +
35 + done

podman-status.service(file created)

@@ -0,0 +1,9 @@
1 + [Unit]
2 + Description=Podman status watcher for dynamic MOTD
3 +
4 + [Service]
5 + ExecStart=/usr/local/bin/podman-status
6 + RemainAfterExit=no
7 +
8 + [Install]
9 + WantedBy=default.target

Jarno Rankinen revised this gist 1646391890. Go to revision

1 file changed, 108 insertions

motd-dynamic(file created)

@@ -0,0 +1,108 @@
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
Newer Older