1
0
Fork 0
mirror of https://github.com/sbrl/cloudcatcher.git synced 2018-01-26 00:52:31 +00:00

I think it's about time I committed this.... :P

This commit is contained in:
Starbeamrainbowlabs 2018-01-03 18:34:50 +00:00
commit ef89799574
Signed by: sbrl
GPG key ID: 1BE5172E637709C2
4 changed files with 138 additions and 0 deletions

8
.gitignore vendored Normal file
View file

@ -0,0 +1,8 @@
.cloudcatcher_settings
# Created by https://www.gitignore.io/api/git
### Git ###
*.orig
# End of https://www.gitignore.io/api/git

90
cloudcatcher-info.sh Executable file
View file

@ -0,0 +1,90 @@
#!/usr/bin/env bash
#############################################
# ███████ ███████ ████████ ██ ██ ██████ #
# ██ ██ ██ ██ ██ ██ ██ #
# ███████ █████ ██ ██ ██ ██████ #
# ██ ██ ██ ██ ██ ██ #
# ███████ ███████ ██ ██████ ██ #
#############################################
tmpdir="$(mktemp --directory --suffix -cloudcatcher)/";
##########################
### Colour Definitions ###
#### ANSI color codes ####
RS="\033[0m" # reset
HC="\033[1m" # hicolor
UL="\033[4m" # underline
INV="\033[7m" # inverse background and foreground
LC="\033[2m" # locolor / dim
FBLK="\033[30m" # foreground black
FRED="\033[31m" # foreground red
FGRN="\033[32m" # foreground green
FYEL="\033[33m" # foreground yellow
FONG="\033[38;5;214m" # foreground orange
FBLE="\033[34m" # foreground blue
FMAG="\033[35m" # foreground magenta
FCYN="\033[36m" # foreground cyan
FWHT="\033[37m" # foreground white
BBLK="\033[40m" # background black
BRED="\033[41m" # background red
BGRN="\033[42m" # background green
BYEL="\033[43m" # background yellow
BBLE="\033[44m" # background blue
BMAG="\033[45m" # background magenta
BCYN="\033[46m" # background cyan
BWHT="\033[47m" # background white
##########################
###################################################################################
# ██████ ██████ ██ ██ ███████ ██████ ████████ ██ ██████ ███ ██ #
# ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ #
# ██ ██ ██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ██ ██ #
# ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ #
# ██████ ██████ ███████ ███████ ███████ ██████ ██ ██ ██████ ██ ████ #
###################################################################################
function calc_reboot_required {
if [ -f /var/run/reboot-required ]; then
echo "${HC}${FRED}*** System restart required ***${RS}";
fi
}
# Apt package pending upgrade count
/usr/lib/update-notifier/apt-check --human-readable | head -n1 >${tmpdir}apt-packages.txt &
# Distribution name
lsb_release -ds | awk '{ gsub("GNU/Linux |[()]", ""); print($0); }' >${tmpdir}distro-description.txt &
# Hostname
hostname >${tmpdir}hostname.txt &
# Kernel version
uname -r >${tmpdir}kernel-version.txt &
# Uptime
uptime --pretty | sed -e 's/up //' >${tmpdir}uptime.txt &
# Current ips
ip addr show scope global | awk -f ./parse_interface_ips.awk >${tmpdir}ips.txt &
# Load
cat /proc/loadavg | cut -d' ' -f 2 >${tmpdir}load.txt &
# Last login
last -1 | awk '{ print $1,"on",$5,$6,$7,"\n\tfrom",$3; exit; }' >${tmpdir}last_login.txt &
# Whether a reboot is required
calc_reboot_required >${tmpdir}reboot_required.txt &
wait
echo -e "Welcome to $(cat ${tmpdir}hostname.txt)";
echo -e " ${LC}running $(cat ${tmpdir}distro-description.txt)${RS}";
echo -e "Kernel: ${FRED}$(cat ${tmpdir}kernel-version.txt)${RS}";
echo -e "Uptime: ${FGRN}$(cat ${tmpdir}uptime.txt)${RS}";
echo -e "Load: ${FONG}$(cat ${tmpdir}load.txt)${RS}";
echo -e "IPs: ${FBLE}$(cat ${tmpdir}ips.txt)${RS}";
cat ${tmpdir}apt-packages.txt;
cat ${tmpdir}reboot_required.txt;
### Cleanup ###
rm -r ${tmpdir};

24
cloudcatcher.sh Executable file
View file

@ -0,0 +1,24 @@
#!/usr/bin/env bash
### Settings ###
logo_filename="logo.txt";
info_filename=$(mktemp --suffix -cloudcatcher);
if [ -f .cloudcatcher_settings ]; then
source .cloudcatcher_settings;
fi
################
cloudcatcher-info.sh >${info_filename}
### Output ###
echo
pr -mtJ ${logo_filename} ${info_filename};
##############
### Cleanup ###
rm "${info_filename}"
###############

16
parse_interface_ips.awk Normal file
View file

@ -0,0 +1,16 @@
BEGIN {
ORS = ""; # We control the output separator in END
ip_count = 0;
}
/inet6?/ {
gsub("/[0-9]+$", "", $2); # Remove the subnet from the end
ips[ip_count++] = $2;
}
END {
for(i = 0 ; i < ip_count ; i++) {
print(ips[i]);
if(i < ip_count - 1) print(", ");
}
}