179 lines
4.9 KiB
Bash
179 lines
4.9 KiB
Bash
#!/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 |