142 rivejä
5.3 KiB
Bash
142 rivejä
5.3 KiB
Bash
#!/usr/bin/env bash
|
|
# BadAI command-line tool
|
|
# Usage: badai restart [--sleep N]
|
|
|
|
set -e # Exit on error
|
|
|
|
sleep_time=3 # Default sleep time in seconds
|
|
|
|
# Parse arguments
|
|
if [[ "$1" == "restart" ]]; then
|
|
name=""
|
|
if [[ "$2" == "--sleep" && -n "$3" && "$3" =~ ^[0-9]+$ ]]; then
|
|
sleep_time="$3"
|
|
name="$4"
|
|
elif [[ -n "$2" ]]; then
|
|
name="$2"
|
|
fi
|
|
|
|
echo "Reloading systemd user daemon..."
|
|
systemctl --user daemon-reload
|
|
|
|
if [[ -n "$name" ]]; then
|
|
# Riavvia servizio specifico
|
|
# Cerca container
|
|
container_file=""
|
|
for file in ~/.config/containers/systemd/*.container; do
|
|
if [[ -f "$file" ]]; then
|
|
if [[ "$(basename "$file")" =~ ^99_ ]]; then continue; fi
|
|
service_name=$(basename "$file" .container)
|
|
display_name=$(echo "$service_name" | sed 's/^[0-9]*_//')
|
|
if [[ "$display_name" == "$name" ]]; then
|
|
container_file="$file"
|
|
break
|
|
fi
|
|
fi
|
|
done
|
|
if [[ -n "$container_file" ]]; then
|
|
service_name=$(basename "$container_file" .container)
|
|
echo "Restarting container $name..."
|
|
if systemctl --user restart "$service_name" 2>/dev/null; then
|
|
echo " ✓ $name restarted successfully"
|
|
else
|
|
echo " ✗ Failed to restart $name"
|
|
fi
|
|
else
|
|
# Cerca network
|
|
network_file=""
|
|
for file in ~/.config/containers/systemd/*.network; do
|
|
if [[ -f "$file" ]]; then
|
|
if [[ "$(basename "$file")" =~ ^99_ ]]; then continue; fi
|
|
service_name=$(basename "$file" .network)-network
|
|
display_name=$(echo "$service_name" | sed 's/^[0-9]*_//')
|
|
if [[ "$display_name" == "$name" ]]; then
|
|
network_file="$file"
|
|
break
|
|
fi
|
|
fi
|
|
done
|
|
if [[ -n "$network_file" ]]; then
|
|
service_name=$(basename "$network_file" .network)-network
|
|
echo "Restarting network $name..."
|
|
if systemctl --user try-restart "$service_name" 2>/dev/null || systemctl --user start "$service_name" 2>/dev/null; then
|
|
echo " ✓ $name restarted successfully"
|
|
else
|
|
echo " ✗ Failed to restart $name"
|
|
fi
|
|
else
|
|
echo "Service $name not found."
|
|
exit 1
|
|
fi
|
|
fi
|
|
# Riavvia nginx
|
|
nginx_file=""
|
|
for file in ~/.config/containers/systemd/*nginx*.container; do
|
|
if [[ -f "$file" ]]; then
|
|
nginx_file="$file"
|
|
break
|
|
fi
|
|
done
|
|
if [[ -n "$nginx_file" ]]; then
|
|
service_name=$(basename "$nginx_file" .container)
|
|
echo "Restarting nginx..."
|
|
if systemctl --user restart "$service_name" 2>/dev/null; then
|
|
echo " ✓ nginx restarted successfully"
|
|
else
|
|
echo " ✗ Failed to restart nginx"
|
|
fi
|
|
fi
|
|
else
|
|
# Riavvia tutti
|
|
echo "Restarting all quadlet networks..."
|
|
for file in ~/.config/containers/systemd/*.network; do
|
|
if [[ -f "$file" ]]; then
|
|
if [[ "$(basename "$file")" =~ ^99_ ]]; then continue; fi
|
|
service_name=$(basename "$file" .network)-network
|
|
display_name=$(echo "$service_name" | sed 's/^[0-9]*_//')
|
|
echo "Restarting $display_name..."
|
|
if systemctl --user try-restart "$service_name" 2>/dev/null || systemctl --user start "$service_name" 2>/dev/null; then
|
|
echo " ✓ $display_name restarted successfully"
|
|
else
|
|
echo " ✗ Failed to restart $display_name"
|
|
fi
|
|
sleep "$sleep_time"
|
|
fi
|
|
done
|
|
|
|
echo "Restarting all quadlet containers..."
|
|
for file in ~/.config/containers/systemd/*.container; do
|
|
if [[ -f "$file" ]]; then
|
|
if [[ "$(basename "$file")" =~ ^99_ ]]; then continue; fi
|
|
service_name=$(basename "$file" .container)
|
|
display_name=$(echo "$service_name" | sed 's/^[0-9]*_//')
|
|
echo "Restarting $display_name..."
|
|
if systemctl --user restart "$service_name" 2>/dev/null; then
|
|
echo " ✓ $display_name restarted successfully"
|
|
else
|
|
echo " ✗ Failed to restart $display_name"
|
|
fi
|
|
sleep "$sleep_time"
|
|
fi
|
|
done
|
|
|
|
echo "All services restarted successfully."
|
|
fi
|
|
elif [[ "$1" == "help" || -z "$1" ]]; then
|
|
cat <<'EOF'
|
|
B A D A I - C O M M A N D L I N E
|
|
--------------------------------------------------------------------------------
|
|
|
|
Usage: badai <command> [options]
|
|
|
|
Commands:
|
|
restart [--sleep N] [name] Restart all quadlet containers and networks, or a specific one by name (without prefix), reload systemd user daemon
|
|
help Show this help message
|
|
|
|
Options:
|
|
--sleep N Sleep N seconds between restarts (default: 3)
|
|
EOF
|
|
else
|
|
echo "Unknown command: $1"
|
|
echo "Use 'badai help' for usage."
|
|
fi |