refactor: Update output formatting and enhance log retrieval in plex.sh

This commit is contained in:
Peter Wood
2025-06-08 19:46:29 -04:00
parent 9bb5545268
commit c698813d6b

View File

@@ -68,28 +68,27 @@ readonly RESET='\033[0m'
readonly PLEX_SERVICE="plexmediaserver"
SCRIPT_NAME="$(basename "$0")"
readonly SCRIPT_NAME
readonly PLEX_WEB_URL="http://localhost:32400/web"
# 🎭 Unicode symbols for fancy output
readonly CHECKMARK=""
readonly CROSS=""
readonly ROCKET="🚀"
readonly STOP_SIGN="🛑"
readonly RECYCLE="♻️"
readonly INFO=""
readonly HOURGLASS=""
readonly SPARKLES=""
# 🎭 ASCII symbols for compatible output
readonly CHECKMARK=""
readonly CROSS=""
readonly ROCKET=""
readonly STOP_SIGN=""
readonly RECYCLE=""
readonly INFO=""
readonly HOURGLASS=""
readonly SPARKLES=""
# 📊 Function to print fancy headers
print_header() {
echo -e "\n${PURPLE}${BOLD}╔══════════════════════════════════════════════════════════════╗${RESET}"
echo -e "${PURPLE}${BOLD} ${SPARKLES} PLEX MEDIA SERVER ${SPARKLES} ${RESET}"
echo -e "${PURPLE}${BOLD}╚══════════════════════════════════════════════════════════════╝${RESET}\n"
echo -e "\n${PURPLE}${BOLD}+==============================================================+${RESET}"
echo -e "${PURPLE}${BOLD}| ${SPARKLES} PLEX MEDIA SERVER ${SPARKLES} |${RESET}"
echo -e "${PURPLE}${BOLD}+==============================================================+${RESET}\n"
}
# 🎉 Function to print completion footer
print_footer() {
echo -e "\n${DIM}${CYAN}╰─── Operation completed ${SPARKLES} ───╯${RESET}\n"
echo -e "\n${DIM}${CYAN}\\--- Operation completed ${SPARKLES} ---/${RESET}\n"
}
# 🎯 Function to print status with style
@@ -135,7 +134,6 @@ start_plex() {
if systemctl is-active --quiet "$PLEX_SERVICE"; then
print_status "${CHECKMARK}" "Plex Media Server started successfully!" "${GREEN}"
echo -e "${DIM}${CYAN}Access your server at: ${WHITE}${PLEX_WEB_URL}${RESET}"
print_footer
else
print_status "${CROSS}" "Failed to start Plex Media Server!" "${RED}"
@@ -183,9 +181,9 @@ show_detailed_status() {
local service_status
service_status=$(systemctl is-active "$PLEX_SERVICE" 2>/dev/null || echo "inactive")
echo -e "\n${BOLD}${BLUE}╔══════════════════════════════════════════════════════════════╗${RESET}"
echo -e "${BOLD}${BLUE} SERVICE STATUS ${RESET}"
echo -e "${BOLD}${BLUE}╚══════════════════════════════════════════════════════════════╝${RESET}"
echo -e "\n${BOLD}${BLUE}+==============================================================+${RESET}"
echo -e "${BOLD}${BLUE}| SERVICE STATUS |${RESET}"
echo -e "${BOLD}${BLUE}+==============================================================+${RESET}"
case "$service_status" in
"active")
@@ -205,7 +203,6 @@ show_detailed_status() {
echo -e "${DIM}${CYAN} Started: ${WHITE}${uptime}${RESET}"
echo -e "${DIM}${CYAN} Memory Usage: ${WHITE}${memory_usage}${RESET}"
echo -e "${DIM}${CYAN} Web Interface: ${WHITE}${PLEX_WEB_URL}${RESET}"
echo -e "${DIM}${CYAN} Service Name: ${WHITE}${PLEX_SERVICE}${RESET}"
;;
"inactive")
@@ -222,9 +219,27 @@ show_detailed_status() {
esac
# Show recent logs
echo -e "\n${DIM}${CYAN}┌─── Recent Service Logs ───┐${RESET}"
echo -e "${DIM}$(journalctl -u "$PLEX_SERVICE" --no-pager -n 3 --since "7 days ago" 2>/dev/null | tail -3 || echo "No recent logs available")${RESET}"
echo -e "${DIM}${CYAN}└────────────────────────────┘${RESET}"
echo -e "\n${DIM}${CYAN}+--- Recent Service Logs (24h) ---+${RESET}"
# Try to get logs with sudo, fall back to user permissions
local logs
if logs=$(sudo journalctl -u "$PLEX_SERVICE" --no-pager -n 5 --since "24 hours ago" --output=short 2>/dev/null); then
if [[ -n "$logs" && "$logs" != "-- No entries --" ]]; then
echo -e "${DIM}${logs}${RESET}"
else
echo -e "${DIM}${YELLOW}No recent log entries found${RESET}"
fi
else
# Fallback: try without sudo
logs=$(journalctl -u "$PLEX_SERVICE" --no-pager -n 5 --since "24 hours ago" 2>/dev/null || echo "Unable to access logs")
if [[ "$logs" == "Unable to access logs" || "$logs" == "-- No entries --" ]]; then
echo -e "${DIM}${YELLOW}Unable to access recent logs (try: sudo journalctl -u ${PLEX_SERVICE})${RESET}"
else
echo -e "${DIM}${logs}${RESET}"
fi
fi
echo -e "${DIM}${CYAN}+----------------------------------+${RESET}"
}
# 🔧 Show available commands