Обновить cockpit/cockpit-installer.sh
This commit is contained in:
@@ -26,7 +26,6 @@ show_help() {
|
|||||||
echo "Usage: $0 [options]"
|
echo "Usage: $0 [options]"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Options:"
|
echo "Options:"
|
||||||
echo " --port <port> Cockpit port (default: 12345)"
|
|
||||||
echo " --user <username> User to create (default: user)"
|
echo " --user <username> User to create (default: user)"
|
||||||
echo " --password <password> Password for the user (default: auto-generated)"
|
echo " --password <password> Password for the user (default: auto-generated)"
|
||||||
echo " --timezone <tz> System timezone (default: UTC, e.g. Europe/Moscow)"
|
echo " --timezone <tz> System timezone (default: UTC, e.g. Europe/Moscow)"
|
||||||
@@ -34,25 +33,20 @@ show_help() {
|
|||||||
echo ""
|
echo ""
|
||||||
echo "Examples:"
|
echo "Examples:"
|
||||||
echo " $0"
|
echo " $0"
|
||||||
echo " $0 --port 8443"
|
echo " $0 --user admin"
|
||||||
echo " $0 --port 8443 --user admin"
|
echo " $0 --user admin --password MySecret123!"
|
||||||
echo " $0 --port 8443 --user admin --password MySecret123!"
|
echo " $0 --timezone Europe/Moscow"
|
||||||
echo " $0 --port 8443 --timezone Europe/Moscow"
|
|
||||||
echo ""
|
echo ""
|
||||||
}
|
}
|
||||||
|
|
||||||
# ─── Parse arguments ──────────────────────────────────────────────────────────
|
# ─── Parse arguments ──────────────────────────────────────────────────────────
|
||||||
COCKPIT_PORT=12345
|
readonly COCKPIT_PORT=12345
|
||||||
NEW_USER="user"
|
NEW_USER="user"
|
||||||
USER_PASSWORD=""
|
USER_PASSWORD=""
|
||||||
TIMEZONE="UTC"
|
TIMEZONE="UTC"
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--port)
|
|
||||||
COCKPIT_PORT="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
--user)
|
--user)
|
||||||
NEW_USER="$2"
|
NEW_USER="$2"
|
||||||
shift 2
|
shift 2
|
||||||
@@ -90,43 +84,12 @@ if ! command -v apt &>/dev/null; then
|
|||||||
fi
|
fi
|
||||||
log_ok "OS check passed"
|
log_ok "OS check passed"
|
||||||
|
|
||||||
# ─── Validate port ────────────────────────────────────────────────────────────
|
|
||||||
validate_port() {
|
|
||||||
local port="$1"
|
|
||||||
if ! [[ "$port" =~ ^[0-9]+$ ]] || \
|
|
||||||
[ "$port" -lt 1 ] || \
|
|
||||||
[ "$port" -gt 65535 ]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
if ! validate_port "$COCKPIT_PORT"; then
|
|
||||||
log_err "Invalid port: '$COCKPIT_PORT'. Must be a number between 1 and 65535"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
log_ok "Port validation passed: $COCKPIT_PORT"
|
|
||||||
|
|
||||||
# ─── Check port is not in use ─────────────────────────────────────────────────
|
# ─── Check port is not in use ─────────────────────────────────────────────────
|
||||||
if ss -tlnp | grep -q ":${COCKPIT_PORT} "; then
|
if ss -tlnp | grep -q ":${COCKPIT_PORT} "; then
|
||||||
log_warn "Port $COCKPIT_PORT is already in use"
|
log_err "Port $COCKPIT_PORT is already in use. The script uses a fixed Cockpit port and cannot continue"
|
||||||
while true; do
|
exit 1
|
||||||
# Print prompt directly to terminal, not to log
|
|
||||||
printf "${YELLOW}[~]${NC} Enter a new port: " > /dev/tty
|
|
||||||
read -r NEW_PORT < /dev/tty
|
|
||||||
if ! validate_port "$NEW_PORT"; then
|
|
||||||
log_err "Invalid port: '$NEW_PORT'. Must be a number between 1 and 65535"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
if ss -tlnp | grep -q ":${NEW_PORT} "; then
|
|
||||||
log_err "Port $NEW_PORT is also in use. Try another"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
COCKPIT_PORT="$NEW_PORT"
|
|
||||||
log_ok "Using port $COCKPIT_PORT"
|
|
||||||
break
|
|
||||||
done
|
|
||||||
fi
|
fi
|
||||||
|
log_ok "Cockpit will use fixed port $COCKPIT_PORT"
|
||||||
|
|
||||||
# ─── Validate timezone ────────────────────────────────────────────────────────
|
# ─── Validate timezone ────────────────────────────────────────────────────────
|
||||||
if ! timedatectl list-timezones | grep -qx "$TIMEZONE"; then
|
if ! timedatectl list-timezones | grep -qx "$TIMEZONE"; then
|
||||||
|
|||||||
Reference in New Issue
Block a user