toolbox.sh
This commit is contained in:
179
toolbox.sh
Normal file
179
toolbox.sh
Normal file
@@ -0,0 +1,179 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ===============================
|
||||
# Colors
|
||||
# ===============================
|
||||
RED="\033[0;31m"
|
||||
GREEN="\033[0;32m"
|
||||
YELLOW="\033[1;33m"
|
||||
CYAN="\033[0;36m"
|
||||
NC="\033[0m"
|
||||
|
||||
LOGFILE="$HOME/toolbox.log"
|
||||
|
||||
# ===============================
|
||||
# Logging function
|
||||
# ===============================
|
||||
log_action() {
|
||||
local msg="$1"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - $msg" >> "$LOGFILE"
|
||||
}
|
||||
|
||||
# ===============================
|
||||
# Functions / Tools
|
||||
# ===============================
|
||||
sys_info() {
|
||||
echo -e "${CYAN}=== CPU ===${NC}"
|
||||
lscpu | grep "Model name"
|
||||
echo -e "${CYAN}=== Memory ===${NC}"
|
||||
free -h
|
||||
echo -e "${CYAN}=== Disk ===${NC}"
|
||||
df -h
|
||||
read -p "Press Enter to go back..."
|
||||
}
|
||||
|
||||
check_site() {
|
||||
while true; do
|
||||
echo -n -e "${YELLOW}Enter website URL (or 'b' to go back): ${NC}"
|
||||
read name
|
||||
[[ "$name" == "b" ]] && break
|
||||
if curl -s --head "$name" | grep "200 OK" > /dev/null; then
|
||||
echo -e "${GREEN}Site is UP${NC}"
|
||||
log_action "Website check: $name - UP"
|
||||
else
|
||||
echo -e "${RED}Site is DOWN${NC}"
|
||||
log_action "Website check: $name - DOWN"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
list_processes() {
|
||||
echo -e "${CYAN}=== Top Processes by CPU ===${NC}"
|
||||
ps aux --sort=-%cpu | head -10
|
||||
read -p "Press Enter to go back..."
|
||||
}
|
||||
|
||||
disk_usage() {
|
||||
echo -e "${CYAN}=== Disk Usage ===${NC}"
|
||||
df -h
|
||||
read -p "Press Enter to go back..."
|
||||
}
|
||||
|
||||
network_info() {
|
||||
echo -e "${CYAN}=== IP Addresses ===${NC}"
|
||||
ip a
|
||||
echo -e "${CYAN}=== Open Ports (TCP) ===${NC}"
|
||||
sudo netstat -tulnp 2>/dev/null
|
||||
read -p "Press Enter to go back..."
|
||||
}
|
||||
|
||||
ping_test() {
|
||||
echo -n -e "${YELLOW}Enter IP or hostname to ping (b to go back): ${NC}"
|
||||
read target
|
||||
[[ "$target" == "b" ]] && return
|
||||
ping -c 4 "$target"
|
||||
read -p "Press Enter to go back..."
|
||||
}
|
||||
|
||||
list_users() {
|
||||
echo -e "${CYAN}=== System Users ===${NC}"
|
||||
cut -d: -f1 /etc/passwd
|
||||
read -p "Press Enter to go back..."
|
||||
}
|
||||
|
||||
add_user() {
|
||||
echo -n -e "${YELLOW}Enter new username (b to go back): ${NC}"
|
||||
read username
|
||||
[[ "$username" == "b" ]] && return
|
||||
if sudo adduser "$username"; then
|
||||
echo -e "${GREEN}User $username added successfully${NC}"
|
||||
log_action "Added user: $username"
|
||||
else
|
||||
echo -e "${RED}Failed to add user $username${NC}"
|
||||
log_action "Failed to add user: $username"
|
||||
fi
|
||||
read -p "Press Enter to continue..."
|
||||
}
|
||||
|
||||
service_manager() {
|
||||
while true; do
|
||||
clear
|
||||
echo -e "${CYAN}=== Service Manager ===${NC}"
|
||||
echo "1) Start service"
|
||||
echo "2) Stop service"
|
||||
echo "3) Restart service"
|
||||
echo "4) Show running services"
|
||||
echo "5) Back to main menu"
|
||||
read -p "Enter choice [1-5]: " svc_choice
|
||||
|
||||
if ! [[ "$svc_choice" =~ ^[1-5]$ ]]; then
|
||||
echo -e "${RED}Invalid choice${NC}"
|
||||
sleep 1
|
||||
continue
|
||||
fi
|
||||
|
||||
case $svc_choice in
|
||||
1|2|3)
|
||||
read -p "Enter service name: " svc
|
||||
action=$( [ "$svc_choice" == 1 ] && echo start || [ "$svc_choice" == 2 ] && echo stop || echo restart )
|
||||
if sudo systemctl "$action" "$svc"; then
|
||||
echo -e "${GREEN}Service $svc $action successfully${NC}"
|
||||
log_action "Service $svc action $action succeeded"
|
||||
else
|
||||
echo -e "${RED}Service $svc $action failed${NC}"
|
||||
log_action "Service $svc action $action failed"
|
||||
fi
|
||||
read -p "Press Enter to continue..."
|
||||
;;
|
||||
4)
|
||||
echo -e "${CYAN}=== Running Services ===${NC}"
|
||||
systemctl list-units --type=service --state=running | head -20
|
||||
read -p "Press Enter to continue..."
|
||||
;;
|
||||
5)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
# ===============================
|
||||
# Main Menu
|
||||
# ===============================
|
||||
while true; do
|
||||
clear
|
||||
echo -e "${CYAN}=== ADMIN TOOLBOX MENU ===${NC}"
|
||||
echo -e "${YELLOW}1) System Info${NC}"
|
||||
echo -e "${YELLOW}2) Check Website Status${NC}"
|
||||
echo -e "${YELLOW}3) List Top Processes${NC}"
|
||||
echo -e "${YELLOW}4) Disk Usage${NC}"
|
||||
echo -e "${YELLOW}5) Network Info${NC}"
|
||||
echo -e "${YELLOW}6) Ping Test${NC}"
|
||||
echo -e "${YELLOW}7) List Users${NC}"
|
||||
echo -e "${YELLOW}8) Add User${NC}"
|
||||
echo -e "${YELLOW}9) Service Manager${NC}"
|
||||
echo -e "${YELLOW}10) Exit${NC}"
|
||||
echo
|
||||
|
||||
read -p "Enter your choice [1-10]: " choice
|
||||
|
||||
# Input validation
|
||||
if ! [[ "$choice" =~ ^[1-9]$|^10$ ]]; then
|
||||
echo -e "${RED}Invalid input! Enter 1-10.${NC}"
|
||||
sleep 1
|
||||
continue
|
||||
fi
|
||||
|
||||
case $choice in
|
||||
1) sys_info ;;
|
||||
2) check_site ;;
|
||||
3) list_processes ;;
|
||||
4) disk_usage ;;
|
||||
5) network_info ;;
|
||||
6) ping_test ;;
|
||||
7) list_users ;;
|
||||
8) add_user ;;
|
||||
9) service_manager ;;
|
||||
10) echo -e "${GREEN}Goodbye!${NC}"; exit 0 ;;
|
||||
esac
|
||||
done
|
||||
Reference in New Issue
Block a user