: ' Changes
Sat Oct 21 2023 cleaned up code and rm cursor during backup
Thu Oct 12 2023 removed "colout" from pip update check
'
trap "continue" 2
[ "$1" == "-D" ] && DEBUG=1 && shift 1
PS4='$SECONDS $LINENO: '
TMOUT=30
TIMEFORMAT="${BY}Elapsed time:${BG} %E${N}"
PATH=$PATH:~/.local/bin
WEB='/var/www'
DOW=$(date +%a)
TODAY=$(date +%m/%d)
DOM=$(date +%d)
OS=$(uname -s)
NAME=${0##*/}
R=$(tput setaf 1)
BR=$(tput setaf 1; tput bold)
G=$(tput setaf 2)
BG=$(tput setaf 2; tput bold)
Y=$(tput setaf 3)
BY=$(tput setaf 3; tput bold)
B=$(tput setaf 4)
BM=$(tput setaf 5; tput bold)
C=$(tput setaf 6)
BC=$(tput setaf 6; tput bold)
BL=$(tput setaf 7; tput bold)
BLD=$(tput bold)
N=$(tput sgr0)
SIT=$(tput sitm)
RIT=$(tput ritm)
UL=$(tput smul)
NL=$(tput rmul)
RV=$(tput rev)
ROWS=$(tput lines)
COLS=$(tput cols)
bl(){
[ "$DEBUG" == "1" ] && set -x
echo ""
}
html(){
vim -f +"syn on" +"set nonu" +"set foldenable!" +"set nospell" +"run! syntax/2html.vim" +"wq" +"q" $1
}
log(){
[ "$DEBUG" == "1" ] && set -x
logger -i -t "$NAME" "$*"
}
pause(){
[ "$DEBUG" == "1" ] && set -x
[ "$1" == "-nt" ] && TMOUT="" && shift
echo "$BY";
if [ $# -gt 0 ]
then
read -t $1 -r -p "${C}Hit any key (${BY}$1${C} second timeout)${N}" -n 1 FOO;
else
read -r -p "${C}Hit any key${N}" -n 1 FOO;
fi;
bl
}
xtitle(){
printf "\033]0;%s\007" "$*"
}
backup()
{
tput civis
log "backup started"
cd || exit 1
gio trash --empty
if [ -d /media/mitch/bu-volume1/ ]
then
log "usb bu-volume1"
xtitle "backup: bu-volume1"
log "rsync: backup"
sudo rsync -aHh --ignore-errors --delete --info=progress2 --exclude='clips' --exclude='Downloads' --exclude='Temp' /etc /etc/goaccess /home /var/www /var/gopher /media/mitch/bu-volume1/ 2>/dev/null
BU="yes"
elif [ -d /media/mitch/bu-volume2 ]
then
xtitle "backup: bu-volume2"
log "backup: bu-volume2"
sudo rsync -aHh --ignore-errors --delete --info=progress2 --exclude='clips'--exclude='Downloads' --exclude='Temp' /etc /etc/goaccess /home /var/www /var/gopher /media/mitch/bu-volume2/ 2>/dev/null
BU="yes"
fi
[ "$BU" != "yes" ] && return
duf -only local
read -r -t 1 -n 10000 discard
echo "------------------"
echo "- All backed up! -"
echo "------------------"
echo "${BY}Wait! Syncing Drives...${N}"
spinit sync
echo "...done"
echo "${G}It's safe to remove the USB drive now.${N}"
[ -d /media/mitch/bu-volume1/www ] && eject /media/mitch/bu-volume1/
[ -d /media/mitch/bu-volume2/www ] && eject /media/mitch/bu-volume2/
log "backup completed"
tput cnorm
cd - >/dev/null || exit 1
}
if [ "$1" == "-E" ]
then
vim $0
sed -i -e "7s/.*/# Updated....: $(date)/" $0
log "Updated $0"
html $0
cp $0 /var/www/unix
mv $0.html /var/www/unix
cp $0 /var/gopher/scripts
exit
fi
if [ "$1" == "-h" ] || [ "$1" == "--help" ]
then
fmt -s -w $(tput cols)<<END
$NAME (Option) # A utility menu/wrapper
-a # display auth.log
-b # perform backup
-h # display this help
-i # display system information
-l # display syslog
-u # update system
-W # watch iptables filtering
${BY}No option starts menu${N}
END
exit
fi
command -v bash >/dev/null || sudo apt install bash -qyy
command -v boxes >/dev/null || sudo apt install boxes -qyy
command -v duf >/dev/null || sudo apt install duf -yyq
command -v htop >/dev/null || sudo apt install htop -yyq
command -v iftop >/dev/null || sudo apt install iftop -yyq
command -v lnav >/dev/null || sudo apt install lnav -yyq
command -v mc >/dev/null || sudo apt install mc -yyq
command -v multitail >/dev/null || sudo apt install multitail -yyq
command -v rsync >/dev/null || sudo apt install rsync -qyy
command -v neofetch >/dev/null || sudo apt install neofetch -yyq
command -v vd >/dev/null || sido apt install visidata -yyq
[ "$DEBUG" == "1" ] && set -x
while :
do
if [ $# -lt 1 ]
then
clear
xtitle "Utilities"
echo ",----[${BC}Utilities${N}]"
echo "
${BC}$(uname -n) / $(fclock) ${N}
a. Auth log
b. Backup system
c. Cpu Information
C. Conky config
g. Gotop
I. Iftop
i. Information
l. Log (syslog)
m. Midnight Commander
p. Ping
t. Htop
u. Update
w. wtmptail
${C}-----------------------${N}
${BR}q. Quit${N}
" |boxes -d boxquote |grep -v '\,'
read -r -p "${C}Selection:${N}" -n 1 CHOICE
else
CHOICE=$(echo "$1" |cut -d'-' -f2)
[ "$1" == "-E" ] && CHOICE=E
fi
case $CHOICE in
a)
clear
xtitle auth.log
lnav /var/log/auth.log
;;
b)
clear
time backup
;;
c)
cpu-x -n
;;
C)
vim ~/.conkyrc
;;
g)
gotop
;;
i)
xtitle "System Info"
cd ~ || exit 1
clear
neofetch
[ $# -eq 0 ] && pause
echo "----------------------"
command -v freec >/dev/null && freec -h;echo " "
echo "----------------------"
pause
duf -only local
pause
sar -s "$(date -d "1 hours ago" +%H):00:00"
[ $# -eq 0 ] && pause
;;
I)
xtitle iftop
clear
sudo iftop -i wlp1s0
;;
m)
mc
;;
p)
xtitle ping
clear
echo -n "IP or host: "
read -r OPTION
ping -c 10 "${OPTION:=8.8.8.8}"
pause
;;
l)
xtitle syslog
clear
lnav /var/log/syslog
;;
t)
xtitle Htop
htop
;;
u)
time {
clear
xtitle Update
log "performing updates"
command -v pip >/dev/null && pip install --upgrade pip
command -v pip >/dev/null && pip install --upgrade visidata
command -v pip >/dev/null && pip install --upgrade epy-reader
command -v pip >/dev/null && pip install --upgrade rsstail
command -v tldr >/dev/null && tldr --update
sudo apt-get update
sudo apt-get upgrade -yyq
sudo apt-get autoremove
sudo apt-get autoclean
}
;;
w)
xtitle wtmp
multitail -cS wtmptail -l wtmptail -n 15
;;
W)
sudo prewatch --interval 0 'iptables -vL'
;;
q)
clear
bl
echo "Bye"
exit
;;
!)
xtitle "Run command"
clear
echo "${BY}Hit return with ${R}no${N}${BY} command to end.${N}"
while :
do
echo -n "[menu] $PWD $ "
read -r EXEC
[ -z "$EXEC" ] && break
eval "$EXEC"
done
pause
;;
=)
reset
exec $0
;;
*)
tput civis
while :
do
clear
dtinfo 2>/dev/null
read -s -t 15 -n 1 x
[ "$x" == "q" ] && break
[ "$x" == "p" ] && read -p '--Paused--' -n1 x
done
tput cnorm
;;
esac
[ $# -eq 1 ] && exit
done