diff --git a/README.md b/README.md index ad2b958..94ca171 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,15 @@ This script will convert your HEIC files (a format Apple saves photos with) to J **cleanupBeatSaberSongs.sh** I wrote this script because I was tired of using the excuse that the folder names are jibberish (98e299036de1688c3f60cda87728ee3c29691888 for example) to not clean up my custom song library. This script goes through all the folders that are 40 characters long (didn't check for only hexadecimal characters so be warned ye ol 40 character song titles), extracts information from their info.dat files (in 2 ways funny enough), and renames the folders to the actual song names with the artist and mapper separated by hyphens. This way if you happen to have a song mapped by different people they don't get overwritten. +**loading** +This was just something I was playing around with while trying to decide if I should add a new icon for services in tmux-idle that are reloading. + **model** This simple script shows the hardware model of a raspberry pi. That is all. +**spacecheck** +This was a script that I wrote to test adding a disk space check to the tmux-idle script but then grew a little bit after to have a few bonus features. + **statusPageCheck.sh** This script is a quick little something to poll my tinystatus page, and if a service is reporting as down, perform an action (such as rebooting the host or restarting the service). @@ -25,7 +31,10 @@ This script is a quick little something to poll my tinystatus page, and if a ser This isn't so much a script as some small quality of life improvements I've made to my WSL Ubuntu 20.04 systems and Ubuntu 20.04 server. Add whichever you like to the end of your .profile and use 'source ~/.profile' to load it immediately. **tmux-idle** -This script just chills in one of my idle tmux windows and shows me the weather. Also added functionality to allow a quick glance at any services that I want to monitor. (All user-configurable options at the top of the file) +This script just chills in one of my idle tmux windows and shows me the weather. Also added functionality to allow a quick glance at any services that I want to monitor, the usage of my disk, and whether or not the server is pending a reboot. (All user-configurable options at the top of the file) + +**vpsping** +I'm looking into getting a vps with hetzner so I wanted an easy way to compare latencies between their data centers. ### AutoHotKey diff --git a/bash/loading b/bash/loading new file mode 100755 index 0000000..350f5c7 --- /dev/null +++ b/bash/loading @@ -0,0 +1,26 @@ +#!/bin/bash + +# Just having fun with unicode characters +#symbols=("\U25DC" "\U25DD" "\U25DE" "\U25DF") # Circle outlines +symbols=("\U25CB" "\U25D4" "\U25D1" "\U25D5" "\U25CF") # Pie chart + +trap ctrl_c INT +function ctrl_c { + tput cub1 + tput cnorm + echo + exit +} + +tput civis + +index=0 +while true; do + +echo -en ${symbols[$index]} +let index=$index+1 +[ $index -eq ${#symbols[@]} ] && index=0 +sleep .25 +tput cub1 + +done diff --git a/bash/spacecheck b/bash/spacecheck new file mode 100755 index 0000000..c2d14c5 --- /dev/null +++ b/bash/spacecheck @@ -0,0 +1,20 @@ +#!/bin/bash + +[ -z $1 ] && index=0 || index=$1 +disks=('/dev/sda1' '/dev/sda15') +[ ${#index} -gt 1 ] && disks=("$index") && index=0 + + +_df=`df -h | tr -s [:blank:] | egrep "^${disks[${index}]} "` + +disk=`echo $_df | cut -d' ' -f1` # /dev/sda1 +size=`echo $_df | cut -d' ' -f2` # 20G +used=`echo $_df | cut -d' ' -f3` # 16G +left=`echo $_df | cut -d' ' -f4` # 6.1G +perc=`echo $_df | cut -d' ' -f5` # 69% +mntp=`echo $_df | cut -d' ' -f6` # / +rper=`echo $perc | tr -d "%"` # 69 + + +echo "Disk: $disk" +echo "Space: $used/$size" diff --git a/bash/tmux-idle b/bash/tmux-idle index 19168bd..dc3a35e 100755 --- a/bash/tmux-idle +++ b/bash/tmux-idle @@ -3,8 +3,11 @@ # Enter your zipcode here for local weather. zipcode=20001 # Add the services you want to monitor here as an array +# e.g. ('apache2' 'gitea' 'postfix') servicelist=('apache2' 'gitea' 'postfix') +# Disks to check (pls only do one for now) +disks=('/dev/sda1') # Colors are nice blk=$(tput setaf 0) red=$(tput setaf 1) @@ -56,6 +59,67 @@ function dothething() { tput cup 0 0 } +# Check to see if we need to reboot the server +function rebootcheck() { + cols=$(tput cols) + reboottext_notneeded=" No reboot required" + reboottext_needed="A reboot is required" + if [ -f /var/run/reboot-required ]; then + # Reboot required + let over="$cols-${#reboottext_needed}" + tput cup 0 $over + echo -en "${rst}${bld}${red}${reboottext_needed}${rst}" + else + # No reboot needed + let over="$cols-${#reboottext_notneeded}-1" + tput cup 0 $over + echo -en "${rst}${grn}${reboottext_notneeded}${rst}" + fi +} + +# Disk space check +function checkdisks() { + _df=`df -h | tr -s [:blank:] | egrep "^${disks[0]} "` + + disk=`echo $_df | cut -d' ' -f1` # /dev/sda1 + size=`echo $_df | cut -d' ' -f2` # 20G + used=`echo $_df | cut -d' ' -f3` # 16G + left=`echo $_df | cut -d' ' -f4` # 6.1G + perc=`echo $_df | cut -d' ' -f5` # 69% + mntp=`echo $_df | cut -d' ' -f6` # / + rper=`echo $perc | tr -d "%"` # 69 + + capvalues=(85 90 95) + capcolors=("${ylw}" "${bld}${red}" "${red}") + + capcolor="" + if [ $rper -lt ${capvalues[0]} ]; then + capcolor="${wht}" + elif [ $rper -ge ${capvalues[0]} ] && [ $rper -lt ${capvalues[1]} ]; then + capcolor="${capcolors[0]}" + elif [ $rper -ge ${capvalues[1]} ] && [ $rper -lt ${capvalues[2]} ]; then + capcolor="${capcolors[1]}" + elif [ $rper -ge ${capvalues[2]} ]; then + capcolor="${capcolors[2]}" + fi + + title="Disk usage" + usage="${used}/${size}" + + cols=$(tput cols) + let overt="$cols-${#title}-1" + let overd="$cols-${#disk}-1" + let overu="$cols-${#usage}-1" + + tput cup 2 $overt + echo -en "${rst}${title}${rst}" + tput cup 3 $overd + echo -en "${rst}${disk}${rst}" + tput cup 4 $overu + echo -en "${rst}${capcolor}${usage}${rst}" +} + + # This be where we check the services function servicecheck(){ # If we're not monitoring any services, return @@ -77,13 +141,22 @@ function servicecheck(){ # Put our cursor where we can print tput cup $echorow $echocol # Clear the variables we use - unset echocol echorow + #unset echocol echorow # Do the actual service check. is-active returns # active or inactive. Easy peasy servicestatus=`systemctl is-active ${servicelist[${index}]}` - # Print out the status, green with a dot (\U25CF) if it's online - # and red with a square (\U25A0) if it's stopped - [ "${servicestatus}" == "active" ] && echo -en "${grn}\U25CF ${servicelist[${index}]}${rst}" || echo -en "${red}\U25A0 ${servicelist[${index}]}${rst}" + # Print out the status, green with a dot (\U25CF) if it's online, + # a red with a square (\U25A0) if it's stopped, or a yellow + # triangle (\U25BA) if it's starting. + case "${servicestatus}" in + active) echo -en "${grn}\U25CF ${servicelist[${index}]}${rst}";; + activating) echo -en "${ylw}\U25BA ${servicelist[${index}]}${rst}";; + inactive) echo -en "${red}\U25A0 ${servicelist[${index}]}${rst}";; + failed) echo -en "${red}\U25A0 ${servicelist[${index}]}${rst}";; + esac + +#[ "${servicestatus}" == "active" ] && echo -en "${grn}\U25CF ${servicelist[${index}]}${rst}" || [ "${servicestatus}" == "activating" ] && echo -en "${ylw}\U25BA ${servicelist[${index}]}${rst}" || echo -en "${red}\U25A0 ${servicelist[${index}]}${rst}" + done tput cup 0 0 } @@ -95,6 +168,10 @@ clear tput civis # Programmers are great at naming things dothething +# Check if a reboot is needed +rebootcheck +# Check the disk capacities +checkdisks # Loop forever. Use ctrl+c to exit. while true; do # We want to make sure we only check once per hour @@ -106,6 +183,9 @@ while true; do # the command every second of the 0th minute. if [ `date +%S` -eq "00" ]; then dothething + # Also doing these once per hour because more seems overkill + rebootcheck + checkdisks fi fi # I don't think checking every second is a problem... yet... diff --git a/bash/vpsping b/bash/vpsping new file mode 100755 index 0000000..6c26436 --- /dev/null +++ b/bash/vpsping @@ -0,0 +1,15 @@ +#!/bin/bash + +servers=('nbg.icmp.hetzner.com' 'fsn.icmp.hetzner.com' 'hel.icmp.hetzner.com' 'ash.icmp.hetzner.com' 'dismyserver.net') +names=('Nuremberg' 'Falkenstein' 'Helsinki' 'Ashburn, VA' 'OVH Canada') + +regex="time=[0-9 \.]+ms" + +for index in $(seq 0 $((${#servers[@]}-1))); do + domain=${servers[$index]} + name=${names[$index]} + pingdata=`ping -c1 ${domain}` + delay=`echo -e $pingdata | egrep -o "${regex}"` + [ ${#domain} -lt 20 ] && tabs="\t\t" || tabs="\t" + echo -e "${name}\t${domain}${tabs}${delay}" +done