908 lines
23 KiB
Bash
908 lines
23 KiB
Bash
|
#!/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
|