907 lines
23 KiB
Bash
Executable file
907 lines
23 KiB
Bash
Executable file
#!/usr/bin/env bash
|
||
|
||
# Bash3lper.sh - Linux server tools
|
||
# Date: 2.2.2020
|
||
# Author : Erreur32
|
||
# - inspired by grabsysinfo.sh from Vivek Gite
|
||
version="2.1.32"
|
||
# echo -e "\n Bash3lper Version: $version"
|
||
|
||
# Define variables
|
||
LSB=/usr/bin/lsb_release
|
||
|
||
readonly PROGNAME=$(basename $0)
|
||
readonly PROGDIR=$(readlink -m $(dirname $0))
|
||
readonly PROGDIRSCRIPT="$(readlink -m $(dirname $0))/scripts"
|
||
readonly ARGS="$@"
|
||
|
||
## debug
|
||
set -e -u -o pipefail
|
||
IFS=$'\n\t'
|
||
on_error() { echo "Error on or near line $1; exiting with status $2"; exit "$2"; }
|
||
#trap 'on_error ${LINENO} $?' ERR
|
||
|
||
|
||
############
|
||
Bash3lper="$(cd "$(dirname "$0")" && pwd)"
|
||
Bscripts="$Bash3lper/scripts"
|
||
Bscript=$(realpath "$0")
|
||
|
||
On_Red=$(tput setab 124)
|
||
On_Green=$(tput setab 28) # ou 40
|
||
#CALERT="${CNoir}${On_Red}" # Bold White on red background
|
||
#CAlert="${CBlanc}${On_Red}"
|
||
#Cokvb="${CBlanc}${On_Green}"
|
||
#Cokv="${CNoir}${On_Green}"
|
||
#Cokvo="${CBlanc}${On_Green} OK ${NC}"
|
||
#Cko="${CRouge}X${NC}"
|
||
#Cok="${CVert}✔${NC}"
|
||
|
||
#### Color definition
|
||
GREEN="$(tput setaf 2)"
|
||
PINK="$(tput setaf 5)"
|
||
BLUE="$(tput setaf 6)"
|
||
RED="$(tput setaf 1)"
|
||
YELLOW="$(tput setaf 3)"
|
||
ORANGE="\e[38;5;202m"
|
||
ORANGE1="$(tput setaf 166)"
|
||
GRIS="\e[38;5;8m"
|
||
#GRIS="$(tput setaf 246)"
|
||
NOC="$(tput sgr0)"
|
||
NC="$(tput sgr0)"
|
||
# tmp dir
|
||
#[ -f tmp ] && echo "Dir tmp not found! let me create it." && mkdir tmp
|
||
|
||
# Make sure only root can run our script
|
||
if [[ $EUID -ne 0 ]]; then
|
||
echo "This script must be run as root" 1>&2
|
||
exit 1
|
||
fi
|
||
|
||
####################################
|
||
# Purpose - Display header message
|
||
#write_header(){
|
||
# local h="$@"
|
||
# echo -e " ${GREEN} ${h} \e[38;5;8m "
|
||
# echo -e "${NOC}"
|
||
#}
|
||
####################################
|
||
# Purpose: Display pause prompt # $1-> Message (optional)
|
||
# Quit
|
||
pause_quit() {
|
||
echo -e "$(tput setaf 3)"
|
||
local message="$@"
|
||
[ -z "$message" ] && message=" Press [Enter] to quit..."
|
||
read -r -p "$message" readEnterKey
|
||
exit 0
|
||
echo -e "$(tput sgr0)"
|
||
clear
|
||
# exit 0
|
||
}
|
||
# Return
|
||
pause() {
|
||
echo -e "$(tput setaf 3)"
|
||
local message="$@"
|
||
[ -z "$message" ] && message=" Press [Enter] key to continue..."
|
||
read -r -p "$message" readEnterKey
|
||
echo -e "$(tput sgr0)"
|
||
clear
|
||
# exit 0
|
||
}
|
||
|
||
check_root() {
|
||
if [[ $EUID -ne 0 ]]; then
|
||
echo -e "\n ${RED}This script must be run as root${NOC}\n\n"
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
###############
|
||
## Header ascii
|
||
write_header_acsii() {
|
||
cat <<-"EOFB"
|
||
|
||
____ _ ____ _
|
||
| _ \ | | |___ \| |
|
||
| |_) | __ _ ___| |__ __) | |_ __ ___ _ __
|
||
| _ < / _` / __| '_ \ |__ <| | '_ \ / _ \ '__|
|
||
| |_) | (_| \__ \ | | |___) | | |_) | __/ |
|
||
|____/ \__,_|___/_| |_|____/|_| .__/ \___|_|
|
||
| |
|
||
|_|
|
||
EOFB
|
||
}
|
||
|
||
##### Header
|
||
write_header() {
|
||
tput clear
|
||
local h="$@"
|
||
# Move cursor to screen location Y,X (top left is 0,0)
|
||
tput cup 0 16
|
||
tput setaf 6
|
||
write_header_acsii
|
||
tput sgr0
|
||
tput cup 7 12
|
||
# Set a foreground colour using ANSI escape
|
||
tput setaf 3
|
||
echo " Bash3lper"
|
||
tput sgr0
|
||
tput cup 7 42
|
||
# Set a foreground colour using ANSI escape
|
||
tput setaf 3
|
||
echo " V0.32"
|
||
tput sgr0
|
||
# Set reverse video mode
|
||
tput cup 11 9
|
||
tput rev
|
||
echo -e "${h}"
|
||
tput sgr0
|
||
# rc revenir position initial
|
||
#tput rc
|
||
#tput cup 13 16
|
||
}
|
||
|
||
|
||
# Main menu
|
||
main_menu() {
|
||
write_header
|
||
write_header " M A I N - M E N U "
|
||
echo -e "${NOC}\n"
|
||
echo -e "${GRIS}|${NOC} 1 ${GRIS}|${NOC} Info - System ${GRIS}(Some info about your system)"
|
||
echo -e "${GRIS}|${NOC} 2 ${GRIS}|${NOC} Tools - System ${GRIS}(Tools list system)"
|
||
echo -e "${GRIS}|${NOC} 3 ${GRIS}|${NOC} Upgrade - System ${GRIS}(Check missing packages system)${NOC}"
|
||
echo -e "${GRIS}|${NOC} 4 ${GRIS}|${NOC} Misc - Tools ${GRIS}(...) "
|
||
echo -e "${GRIS}|${NOC} 5 ${GRIS}|${NOC} Scripts - Tools ${GRIS}(Scripts list) "
|
||
echo ""
|
||
echo -e "${GRIS}|${NOC} b ${GRIS}|${NOC} Browser terminal"
|
||
echo -e "\n\n${GRIS} ------------ ${NOC}</>${GRIS} -------------"
|
||
echo -e "${GRIS}| ${NOC}d${GRIS} | Bash3lper mode dialog |"
|
||
echo -e " ----- ------------------------ "
|
||
echo -e "${GRIS}| ${NOC}i${GRIS} | Bash3lper info |"
|
||
echo -e " ----- ------------------------ "
|
||
echo -e "${GRIS}| (${YELLOW}0${GRIS} or ${YELLOW}Enter${GRIS}) to ${NOC}exit${GRIS} |"
|
||
echo -e "${GRIS} ------------ ${NOC}</>${GRIS} -------------${NOC}\n"
|
||
}
|
||
|
||
# Purpose - Get input via the keyboard and make a decision using case..esac
|
||
|
||
read_input() {
|
||
echo -e "\e[38;5;202m "
|
||
local c
|
||
read -r -p " Enter your choice ${NOC} -> " c
|
||
case $c in
|
||
1) system_menu ;;
|
||
2) tools_menu ;;
|
||
3) maj_system ;;
|
||
4) misc_menu ;;
|
||
5) clear
|
||
# $dirnamescript/scripts/bashelper_list-script.sh
|
||
$Bash3lper/scripts/bashelper_list-script.sh
|
||
;;
|
||
b) sensible-browser https://git.echosystem.fr/Erreur32/Bash3lper ;;
|
||
i) show_info_bash3lper
|
||
pause
|
||
;;
|
||
d) /bin/sh ./Bash3lper-dial.sh
|
||
exit 0
|
||
;;
|
||
0) echo -e "\n Thanks to using \e[38;5;184mBash3lper ${NOC} "
|
||
exit 0
|
||
;;
|
||
"") echo -e "\n Thanks to using \e[38;5;184mBash3lper ${NOC} "
|
||
exit 0
|
||
;;
|
||
*) echo -e "\e[38;5;202m Please select between 0 to 9. ${NOC}"
|
||
pause
|
||
;;
|
||
esac
|
||
}
|
||
|
||
################# system menu ##########################
|
||
system_menu() {
|
||
option=0
|
||
until [ "$option" = "q" ]; do
|
||
write_header
|
||
write_header " I N F O - S Y S T E M "
|
||
echo -e "${NOC}\n"
|
||
echo -e "| 1 | Operating system info"
|
||
echo -e "| 2 | Network info"
|
||
echo -e "| 3 | Who is online"
|
||
echo -e "| 4 | Last logged in users"
|
||
echo -e "| 5 | Check big file"
|
||
echo -e "| 6 | All USer Crontab (root)"
|
||
echo -e "| 7 | All (quick) stat"
|
||
echo -e "\n\n --------- </> ----------"
|
||
echo -e "| 0 | Return Main Menu ${NOC}"
|
||
echo -e "| q |${RED} Exit ${NOC}"
|
||
echo -e "\e[38;5;202m "
|
||
local option
|
||
read -r -p " Enter your choice ${NOC} -> " option
|
||
echo -e "\n\n"
|
||
case $option in
|
||
1) os_info
|
||
;;
|
||
2) net_info
|
||
;;
|
||
3) user_info "who"
|
||
;;
|
||
4) user_info "last"
|
||
;;
|
||
5) clear
|
||
/usr/bin/duf ; echo -e "/n"
|
||
show_check_file
|
||
;;
|
||
6) clear
|
||
$Bash3lper/scripts/bashelper_show-crontab.sh
|
||
# $Bscripts/bashelper_show-crontab.sh
|
||
pause
|
||
;;
|
||
7) clear
|
||
$Bash3lper/scripts/bashelper_Monitor32.sh -a
|
||
# $dirnamescript/scripts/bashelper_Monitor32.sh -a
|
||
pause
|
||
;;
|
||
0) clear
|
||
break
|
||
;;
|
||
q) clear
|
||
exit 0
|
||
;;
|
||
"")
|
||
clear
|
||
break
|
||
;;
|
||
*)
|
||
echo -e "\n \e[38;5;202m Please select valid value. ${NOC}"
|
||
pause
|
||
;;
|
||
esac
|
||
done
|
||
}
|
||
|
||
################# TOOLS MENU ##########################
|
||
|
||
tools_menu() {
|
||
option=0
|
||
until [ "$option" = "q" ]; do
|
||
write_header
|
||
write_header " T O O L - S Y S T E M "
|
||
echo -e "${NOC}"
|
||
echo -e " ${GRIS}MONITORING SYSTEM${NC}"
|
||
echo -e "| 1 | Bashtop "
|
||
echo -e "| 2 | Glances"
|
||
echo -e "| 3 | Htop"
|
||
echo -e "| 4 | gtop"
|
||
echo -e "| 5 | watch Sensors"
|
||
echo -e "| 6 | s-tui"
|
||
echo -e "| 7 | Vtop"
|
||
echo -e "\n ${GRIS}Network${NOC}"
|
||
echo -e "| 14 | nload eth0"
|
||
echo -e "| 15 | iftop"
|
||
echo -e "| 16 | nethogs eth0"
|
||
echo -e "| 17 | bmon"
|
||
echo -e "| 18 | speedometer eth0"
|
||
echo -e "| 19 | vnstat "
|
||
echo -e "| 10 | netwatch eth0"
|
||
echo -e "| 666 | More info "
|
||
|
||
echo -e "\n (press q to return here)"
|
||
echo -e "| 11 | ttyload"
|
||
echo -e "| 12 | netload eth0"
|
||
echo -e "\n --------- </> ----------"
|
||
echo -e "| 0 | Return Main Menu ${NOC}"
|
||
echo -e "| q | ${RED} Exit ${NOC}"
|
||
echo -e "\e[38;5;202m "
|
||
local option
|
||
read -r -p " Enter your choice ${NOC} -> " option
|
||
echo -e "\n"
|
||
case $option in
|
||
1) clear
|
||
scripts/bashelper_bashtop.sh
|
||
;;
|
||
2) clear
|
||
glances
|
||
;;
|
||
3) clear
|
||
htop
|
||
Bash3lper.sh
|
||
;;
|
||
4) clear
|
||
show_gtop
|
||
;;
|
||
5) clear
|
||
watch -n 1 -d /usr/bin/sensors
|
||
trap ''
|
||
;;
|
||
6) clear
|
||
s-tui
|
||
;;
|
||
7) clear
|
||
show_vtop
|
||
;;
|
||
# 6) clear ; $Bscripts/nmon.sh ;;
|
||
14) clear
|
||
nload eth0
|
||
;;
|
||
15) clear
|
||
iftop
|
||
;;
|
||
16) clear
|
||
nethogs -p eth0
|
||
;;
|
||
17) clear
|
||
show_bmon
|
||
;;
|
||
18) clear
|
||
speedometer -r eth0 -t eth0
|
||
;;
|
||
19) clear
|
||
write_header
|
||
vnstat -s
|
||
vnstat -t
|
||
vnstat -m
|
||
pause
|
||
;;
|
||
10) clear
|
||
netwatch -e eth0
|
||
;;
|
||
11) clear
|
||
ttyload
|
||
trap 'break' EXIT
|
||
;;
|
||
12) clear
|
||
netload eth0
|
||
;;
|
||
0) break
|
||
;;
|
||
q) clear
|
||
exit 0
|
||
;;
|
||
*) echo -e "\n \e[38;5;202m Please select valid value. ${NOC}"
|
||
unset REPLY
|
||
;;
|
||
esac
|
||
done
|
||
}
|
||
|
||
#########################################
|
||
misc_menu() {
|
||
option=0
|
||
until [ "$option" = "q" ]; do
|
||
write_header
|
||
write_header " MISC - tool "
|
||
echo -e "${NOC}\n"
|
||
echo -e "| 1 | ${ORANGE}HACK${NOC}"
|
||
echo -e "| 2 | ${YELLOW}MOTDs32${NOC}"
|
||
echo -e "| 22 | Find top 10 big file /log"
|
||
echo -e "| 3 | Find Big File"
|
||
echo -e "| 33 | Clock - time"
|
||
echo -e "| cro | All USer Crontab (root)"
|
||
echo -e "\n\n --------- </> -----------"
|
||
echo -e "| 0 | Return Main Menu ${NOC}"
|
||
echo -e "| q |${RED} Exit ${NOC}"
|
||
echo -e "\e[38;5;202m "
|
||
local option
|
||
read -r -p " Enter your choice ${NOC} -> " option
|
||
echo -e "\n"
|
||
case $option in
|
||
1) clear
|
||
$Bscripts/bashelper_redhawk.sh
|
||
misc_menu
|
||
;;
|
||
2) check_motds32
|
||
;;
|
||
22) echo "todo!"
|
||
;;
|
||
3) clear
|
||
show_check_file
|
||
;;
|
||
33) clear
|
||
$Bscripts/bashelper_clock.sh
|
||
misc_menu
|
||
;;
|
||
0) clear
|
||
break
|
||
;;
|
||
q) clear
|
||
exit 0
|
||
;;
|
||
*) clear
|
||
echo -e "\e[38;5;202m Please select valid value.${NOC}"
|
||
;;
|
||
esac
|
||
done
|
||
}
|
||
|
||
############################################
|
||
maj_system() {
|
||
option=0
|
||
until [ "$option" = "q" ]; do
|
||
write_header
|
||
write_header " M A J - S Y S T E M "
|
||
echo -e "${NOC} \n "
|
||
echo -e "| 1 | APT update only"
|
||
echo -e "| 2 | ${ORANGE}APT Installation ${NOC}"
|
||
echo -e "| 3 | Install all essential"
|
||
echo -e "| 4 | List package installed"
|
||
echo -e "| 5 | Updatedb"
|
||
echo -e "\n --------- </> -----------\n"
|
||
echo -e "| 10 | Add .bashrc path"
|
||
echo -e "| 11 | Del .bashrc path"
|
||
echo -e "| 20 | FIX file (root right)"
|
||
echo -e "\n\n --------- </> -----------\n"
|
||
echo -e "| 00 | Check bashrc ${NOC}"
|
||
echo -e "| 0 | Return Main Menu ${NOC}"
|
||
echo -e "| q |${RED} Exit ${NOC}"
|
||
echo -e "\e[38;5;202m "
|
||
local option
|
||
read -r -p " Enter your choice ${NOC} -> " option
|
||
echo -e "\n"
|
||
case $option in
|
||
1) check_root
|
||
$Bscripts/bashelper_apt-update.sh
|
||
# show_info_Aide
|
||
;;
|
||
2) check_root
|
||
$Bscripts/bashelper_apt-upgrade.sh
|
||
# show_info_Aide
|
||
;;
|
||
3) check_root
|
||
$Bscripts/bashelper_apt-dependencies.sh
|
||
# show_info_Aide
|
||
;;
|
||
4) $Bscripts/bashelper_apt-check-installed.sh
|
||
;;
|
||
5) updatedb_do
|
||
;;
|
||
10) add_path
|
||
echo " Put manually in your .bashrc (after path line) : export PATH=/usr/local/bin:/usr/bin:/bin:$Bash3lper "
|
||
# show_info_Aide
|
||
;;
|
||
00) check_bashrc
|
||
;;
|
||
11) $Bscripts/bashelper_del_path.sh
|
||
# show_info_Aide
|
||
;;
|
||
20) $Bscripts/bashelper_fix_owner.sh
|
||
# show_info_Aide
|
||
;;
|
||
0) clear
|
||
break
|
||
;;
|
||
q) clear
|
||
exit 0
|
||
;;
|
||
*) echo -e "\e[38;5;202m Please select valid value. ${NOC}" ;;
|
||
esac
|
||
done
|
||
}
|
||
|
||
updatedb_do() {
|
||
write_header
|
||
write_header " updatedb - UPDATE "
|
||
echo -e "\n updated is dependant to locate function, eg: locate Bash3lper\n\n"
|
||
echo -e "updatdb inprogress ... please wait!" && updatedb
|
||
echo -e " ${GREEN} OK"
|
||
pause
|
||
}
|
||
|
||
check_bashrc() {
|
||
write_header
|
||
write_header " P A T H - A L I A S "
|
||
|
||
if [ $(grep -c "Bash3lper.sh" ~/.bashrc) == 0 ]; then
|
||
# echo -e "${RED} Code bash not found"
|
||
echo -e "alias bashelper=\"$Bash3lper/Bash3lper.sh\"" >> ~/.bashrc
|
||
echo -e "\n\n Check PATH: $PROGDIRSCRIPT"
|
||
echo -e "export PATH=\$PATH:$PROGDIRSCRIPT" >> ~/.bashrc
|
||
echo -e "\n \e[0m >>\e[50;3m alias=\"$Bash3lper/Bash3lper.sh\" \e[0m\n"
|
||
echo -e " ${NOC}[\e[32m✔${NOC}] \e[1;30m Code added in bashrc OK!\n"
|
||
source ~/.bashrc && export PATH
|
||
pause
|
||
else
|
||
|
||
echo -e "\n\n Check PATH: $PROGDIRSCRIPT\n"
|
||
echo -e " PATH bashelper ok! [\e[32m✔${NOC}]"
|
||
pause
|
||
fi
|
||
}
|
||
|
||
|
||
|
||
add_path() {
|
||
write_header
|
||
write_header " P A T H - S Y S T E M "
|
||
|
||
echo -e "\n \e[48;3m -Script path: ${NOC}$Bash3lper\n"
|
||
# if no path - add this
|
||
#if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin:$Bash3lper; fi
|
||
|
||
if grep -qinE "Bash3lper" ~/.bashrc ; then
|
||
# echo -e "\n \e[0m >>\e[50;3m export PATH=$PATH$Bash3lper \e[0m\n${NOC}"
|
||
# if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin:$Bash3lper; fi
|
||
# echo -e " \e[0m >>\e[50;3m alias=\"$Bash3lper/Bash3lper.sh\" \e[0m\n"
|
||
# echo -e " ${NOC}[\e[32m✔${NOC}] \e[1;30m Code added in bashrc OK!\n"
|
||
echo -e "✅ Code .bashrc OK"
|
||
echo $PROGDIR
|
||
else
|
||
echo -e "alias bashelper=\"$Bash3lper/Bash3lper.sh\"" >> ~/.bashrc
|
||
echo -e "\n \e[0m >>\e[50;3m export PATH=$PATH$Bash3lper \e[0m\n${NOC}"
|
||
if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin:$Bash3lper; fi
|
||
echo -e "export PATH=\$PATH:$Bash3lper" >> ~/.bashrc
|
||
echo -e " \e[0m >>\e[50;3m alias=\"$Bash3lper/Bash3lper.sh\" \e[0m\n"
|
||
echo -e " ${NOC}[\e[32m✔${NOC}] \e[1;30m Code added in bashrc OK!\n"
|
||
|
||
# echo -e "export PATH=\$PATH:$Bash3lper" >> ~/.bashrc
|
||
# echo -e " \e[0m >>\e[50;3m alias=\"$Bash3lper/Bash3lper.sh\" \e[0m\n"
|
||
# echo -e " alias bashelper=\"$Bash3lper/Bash3lper.sh\"" >> ~/.bashrc
|
||
# echo -e " ${NOC} [\e[32m✔${NOC}] -->\e[34m Path added in .bashrc: \e[38;5;2mOK\e[0m \n"
|
||
# echo -e "\n\e[48;3m Your new path is: ${NOC}"
|
||
# echo -e " $PATH"
|
||
fi
|
||
#source ~/.bashrc
|
||
#echo -e "\n add path to your .bashrc $GREEN OK ${NOC}"
|
||
|
||
pause && source ~/.bashrc && export PATH
|
||
}
|
||
|
||
|
||
remove_path (){
|
||
write_header
|
||
write_header " P A T H - S Y S T E M "
|
||
|
||
if (whiptail --title " Yes / No" --yesno "Remove path in your .bashrc ?" 10 60) then
|
||
# make backup of your .bashrc
|
||
cp ~/.bashrc ~/.bashrc_backup
|
||
echo -e "\n ${YELLOW} backup of your .bashrc DONE! \n"
|
||
|
||
|
||
echo -e "\n${GRIS} --------- </> ---------- ${NOC}\n"
|
||
echo -e "\n - remove path in your .bashrc \n"
|
||
echo -e "${GRIS} --------- </> ---------- ${NOC}\n"
|
||
|
||
if [ `grep -c Bash3lper ~/.bashrc` == 0 ]
|
||
then
|
||
echo -e "\n ${RED} Code bash not found - or already removed!\n ${GREEN} All GOOD !\n\n"
|
||
pause
|
||
else
|
||
sed -i '/Bash3lper/d' ~/.bashrc
|
||
echo -e "\e[92m Code .bashrc removed.\n\e[0m"
|
||
echo -e " ${GREEN} all GOOD !"
|
||
echo -e "${YELLOW}To reload your bash now type: ${GRIS} source ~/.bashrc${NOC}"
|
||
pause
|
||
# source ~/.bashrc
|
||
echo -e "\e[1;30m Check\n \e[0m>>\e[50;3m export PATH=$PATH \e[0m<<\n\n"
|
||
# relaod bashrc
|
||
# grep -n 'Bash3lper' ~/.bashrc
|
||
fi
|
||
# echo -e "\n${RED} Already removed! ${NOC}- ${GREEN} all GOOD !${NOC}2"
|
||
else
|
||
echo -e "\n ${RED} No change ! quit"
|
||
pause
|
||
fi
|
||
|
||
}
|
||
|
||
|
||
|
||
################################
|
||
# System menu
|
||
show_check_file() {
|
||
write_header
|
||
write_header " DUF + FIND top 10 big file - /var/log "
|
||
echo -e "\n\n${GRIS} --------- </> ---------- ${NOC}\n"
|
||
# duf
|
||
# Vérifier si la commande 'curl' est installée
|
||
if ! which duf > /dev/null; then
|
||
echo "La dépendance curl n'est pas installée."
|
||
read -p "Voulez-vous l'installer maintenant? (y/n) " choice
|
||
if [ "$choice" = "y" ]; then
|
||
sudo apt-get install duf
|
||
else
|
||
echo "Installation annulée."
|
||
# exit 1
|
||
fi
|
||
fi
|
||
|
||
/usr/bin/duf
|
||
echo ""
|
||
echo -e " Check Big file ... please wait"
|
||
echo ""
|
||
find /var/log/ -type f -exec du -s {} \; | sort -n | tail -n 10
|
||
pause
|
||
}
|
||
|
||
#################################
|
||
# TOOLS menu
|
||
|
||
check_motds32() {
|
||
# write_header
|
||
# write_header " MOTDs32 "
|
||
if [ -f /usr/bin/motds32 ]; then
|
||
/usr/bin/motds32 -s
|
||
pause
|
||
else
|
||
echo "MOTDS32 not installed , installation in progress... please wait!"
|
||
# cd /tmp
|
||
# git clone https://git.echosystem.fr/Erreur32/MOTDs32.git
|
||
# cd /tmp/MOTDs32 && ./install.sh
|
||
pause
|
||
fi
|
||
}
|
||
|
||
show_check_bmon() {
|
||
dpkg-query -l bmon | grep bmon
|
||
}
|
||
|
||
show_bmon() {
|
||
if [ -n show_check_bmon ]; then
|
||
# echo "ok bmon is installed"
|
||
/usr/bin/bmon
|
||
else
|
||
echo "bmon not installed , installation in progress... please wait!"
|
||
echo "apt-get install bmon"
|
||
apt-get install bmon
|
||
fi
|
||
}
|
||
#######
|
||
show_check_glances() {
|
||
dpkg-query -l glances | grep glances
|
||
}
|
||
|
||
show_glances() {
|
||
if [ -n show_check_glances ]; then
|
||
# echo "ok bmon is installed"
|
||
/usr/bin/bmon
|
||
else
|
||
echo "Glances not installed , installation in progress... please wait!"
|
||
echo "curl -L https://bit.ly/glances | /bin/bash"
|
||
curl -L https://bit.ly/glances | /bin/bash
|
||
fi
|
||
}
|
||
|
||
######
|
||
show_check_vtop() {
|
||
if [ -f /usr/bin/vtop ]; then
|
||
/usr/bin/vtop
|
||
else
|
||
echo "$FILE not installed , installation in progress... please wait!"
|
||
npm install -g vtop || echo "npm need to be installed"
|
||
fi
|
||
}
|
||
|
||
show_vtop() {
|
||
if [ -f /usr/local/bin/vtop ]; then
|
||
# echo "wheris vtop is installed"
|
||
#whereis vtop
|
||
/usr/local/bin/vtop
|
||
else
|
||
echo "Vtop not installed , installation in progress... please wait!"
|
||
echo "npm install -g vtop"
|
||
npm install -g vtop || echo "npm need to be installed"
|
||
fi
|
||
}
|
||
#######
|
||
show_check_gtop() {
|
||
dpkg-query -l bmon | grep gtop
|
||
}
|
||
|
||
show_gtop() {
|
||
if [ -n show_check_gtop ]; then
|
||
# echo "ok bmon is installed"
|
||
/usr/bin/gtop
|
||
else
|
||
echo "gtop not installed , installation in progress... please wait!"
|
||
echo "npm install gtop -g"
|
||
npm install gtop -g
|
||
fi
|
||
}
|
||
|
||
# Purpose - Get info about your operating system
|
||
os_info() {
|
||
clear
|
||
write_header
|
||
write_header " System information "
|
||
echo -e "\n\n"
|
||
echo -e " Operating system :$GREEN $(uname) ${NOC}"
|
||
[ -x $LSB ] && $LSB -a || echo " $LSB command is not insalled (set \$LSB variable)"
|
||
echo ""
|
||
# pause
|
||
# host_info ()
|
||
local dnsips=$(sed -e '/^$/d' /etc/resolv.conf | awk '{if (tolower($1)=="nameserver") print $2}')
|
||
echo -e "\n Hostname :$GREEN $(hostname -s)${NOC}"
|
||
echo -e " DNS domain :$GREEN $(hostname -d)${NOC}"
|
||
echo -e " Fully qualified domain name :$GREEN $(hostname -f)${NOC}"
|
||
echo -e " Network address (IP) :$GREEN $(hostname -i)${NOC}"
|
||
echo -e " DNS name servers (DNS IP) :$GREEN ${dnsips}${NOC}"
|
||
# pause
|
||
# meminfo ()
|
||
echo -e "\n\n $GREEN Free memory ${NOC}"
|
||
free -m
|
||
echo -e "\n $GREEN Virtual memory statistics ${NOC}"
|
||
vmstat
|
||
echo -e "\n $GREEN Top 5 memory eating process ${NOC}"
|
||
ps auxf | sort -nr -k 4 | head -5 && pause
|
||
echo ""
|
||
pause
|
||
}
|
||
|
||
# Purpose - Get info about host such as dns, IP, and hostname
|
||
host_info() {
|
||
write_header
|
||
local dnsips=$(sed -e '/^$/d' /etc/resolv.conf | awk '{if (tolower($1)=="nameserver") print $2}')
|
||
write_header " Hostname and DNS information ${NOC}"
|
||
echo -e "\n\n Hostname :$GREEN $(hostname -s)${NOC}"
|
||
echo -e " DNS domain :$GREEN $(hostname -d)${NOC}"
|
||
echo -e " Fully qualified domain name :$GREEN $(hostname -f)${NOC}"
|
||
echo -e " Network address (IP) :$GREEN $(hostname -i)${NOC}"
|
||
echo -e " DNS name servers (DNS IP) :$GREEN ${dnsips}${NOC}"
|
||
pause
|
||
}
|
||
|
||
# Purpose - Network inferface and routing info
|
||
net_info() {
|
||
# {
|
||
# for ((i = 0; i <= 100; i += 20)); do
|
||
# sleep 0.5s
|
||
# echo $i
|
||
# done
|
||
# } | whiptail --gauge "Veuillez patienter ... Scan en cours" 6 60 0
|
||
clear
|
||
write_header
|
||
devices=$(netstat -i | cut -d" " -f1 | egrep -v "^Kernel|Iface|lo")
|
||
write_header " Network information "
|
||
echo -e " \n\n"
|
||
echo -e " Total network interfaces found :\e[38;5;11m $(wc -w <<<${devices}) ${NOC}"
|
||
echo -e ""
|
||
echo -e "\e[38;5;8m---------------------------------------------------------------${NOC}"
|
||
echo -e "$GREEN IP Addresses ${NOC} Information ${NOC}"
|
||
echo -e "\e[38;5;8m---------------------------------------------------------------${NOC}"
|
||
ip -4 address show
|
||
echo ""
|
||
echo -e "\e[38;5;8m---------------------------------------------------------------${NOC}"
|
||
echo -e "$GREEN Network routing ${NOC}"
|
||
echo -e "\e[38;5;8m---------------------------------------------------------------${NOC}"
|
||
netstat -nr
|
||
echo ""
|
||
echo -e "\e[38;5;8m---------------------------------------------------------------${NOC}"
|
||
echo -e "$GREEN Interface traffic information ${NOC}"
|
||
echo -e "\e[38;5;8m---------------------------------------------------------------${NOC}"
|
||
netstat -i
|
||
echo ""
|
||
pause
|
||
}
|
||
|
||
# Purpose - Display a list of users currently logged on
|
||
# display a list of receltly loggged in users
|
||
user_info() {
|
||
echo -e " \n\n"
|
||
{
|
||
for ((i = 0; i <= 100; i += 25)); do
|
||
sleep 0.4
|
||
echo $i
|
||
done
|
||
} | whiptail --gauge "Veuillez patienter ... Scan en cours" 6 60 0
|
||
|
||
local cmd="$1"
|
||
case "$cmd" in
|
||
who)
|
||
write_header " Who is online "
|
||
who -H
|
||
pause
|
||
;;
|
||
last)
|
||
write_header " List of last logged in users "
|
||
last
|
||
pause
|
||
;;
|
||
esac
|
||
}
|
||
|
||
# Purpose - Display used and free memory info
|
||
mem_info() {
|
||
write_header " Free and used memory "
|
||
echo -e " \n\n"
|
||
free -m
|
||
echo ""
|
||
echo -e "*** $GREEN Virtual memory statistics ${NOC}"
|
||
vmstat
|
||
echo ""
|
||
echo -e "*** $GREEN Top 5 memory eating process ${NOC}"
|
||
ps auxf | sort -nr -k 4 | head -5
|
||
echo ""
|
||
pause
|
||
}
|
||
|
||
show_info_bash3lper() {
|
||
write_header
|
||
write_header " S C R I P T - I N F O "
|
||
echo -e "\n${GRIS} --------- </> ---------- ${NOC}\n"
|
||
echo -e " Bash3lper \n"
|
||
echo -e " Path script : $Bash3lper/ \n Script Name : $0 \n - Version : $version \n - Author : Erreur32 \n"
|
||
echo -e "${GRIS} --------- </> ---------- ${NOC}\n"
|
||
echo -e " Bash3lper CLI"
|
||
# echo -e " cli enable: ./bash3lper -h (help) \n"
|
||
echo -e " ${GRIS} Usage:\n ${NOC} bash3lper --help (-h)${GRIS} :Display help message ${NOC}\n"
|
||
echo -e "${GRIS} --------- </> ---------- ${NOC}\n"
|
||
echo -e " Kernel Info: $(uname -smr)"
|
||
echo -e " Shell: $SHELL ${NC}\n"
|
||
|
||
}
|
||
|
||
######################## - CLI ###################################
|
||
show_cli() {
|
||
write_header
|
||
write_header " C L I - info "
|
||
echo -e "\n Bash3lper CLI"
|
||
echo -e "$GRIS Usage:\n \$ bash3lper [arguments] ${NOC}\n"
|
||
echo -e "Arguments:"
|
||
echo -e "--help (-h): Display this help message"
|
||
echo -e "--update (-U): Update Bash3lper script"
|
||
echo -e "--stat32 (-s): Stat32 show system stat"
|
||
echo -e "--motds32(-m): show MOTD\n"
|
||
echo -e "--info (-i): Info script"
|
||
echo -e "--version(-v): Show version\n"
|
||
}
|
||
|
||
|
||
################################################################
|
||
## CLI
|
||
read_cli() {
|
||
case "$@" in
|
||
|
||
-h | --help)
|
||
show_cli
|
||
exit 0
|
||
;;
|
||
-i | --info)
|
||
show_info_bash3lper
|
||
exit 0
|
||
;;
|
||
-U | --update)
|
||
write_header
|
||
write_header " UPDATE "
|
||
echo -e "\n"
|
||
exit 0
|
||
;;
|
||
-v | --version)
|
||
show_info_bash3lper
|
||
exit 0
|
||
;;
|
||
-m | --motds32)
|
||
echo "Read motds32 file"
|
||
cat /etc/motd
|
||
exit 0
|
||
;;
|
||
-s | --stat32)
|
||
echo "Read motds32 file"
|
||
/etc/motds32/Stats32
|
||
exit 0
|
||
;;
|
||
*)
|
||
main_menu
|
||
;;
|
||
esac
|
||
|
||
}
|
||
|
||
################################################################
|
||
# ignore CTRL+C, CTRL+Z and quit singles using the trap
|
||
# trap '' SIGINT SIGQUIT SIGTSTP
|
||
trap "clear; exit" SIGHUP SIGINT SIGTERM
|
||
###############################
|
||
#function finish {
|
||
# Your cleanup code here
|
||
#}
|
||
#trap finish EXIT
|
||
###############################
|
||
## main_menu logic
|
||
while true; do
|
||
read_cli $ARGS
|
||
clear
|
||
main_menu # display memu
|
||
read_input # wait for user input
|
||
done
|
||
|
||
|
||
## EOF
|