diff --git a/deploy.sh b/deploy.sh index cc9d4bd..b7364c7 100644 --- a/deploy.sh +++ b/deploy.sh @@ -22,15 +22,15 @@ show_help() { # Функция для вывода цветных сообщений log_info() { - echo -e "${GREEN}[INFO]${NC} $1" + echo -e "${GREEN}[INFO]${NC} $1" >&2 } log_warn() { - echo -e "${YELLOW}[WARN]${NC} $1" + echo -e "${YELLOW}[WARN]${NC} $1" >&2 } log_error() { - echo -e "${RED}[ERROR]${NC} $1" + echo -e "${RED}[ERROR]${NC} $1" >&2 } # Функция проверки и установки пакетов @@ -167,7 +167,7 @@ create_systemd_service() { data_command="$data_command --league \"$league\"" fi - # Создаем сервисный файл + # Создаем сервисный файл в правильной директории local data_service_file="/etc/systemd/system/rfb-data.service" log_info "Создание файла сервиса: $data_service_file" @@ -230,7 +230,7 @@ check_required_files() { fi } -# Функция определения IP и команды +# Функция определения IP и команды (исправленная) detect_team() { local team_arg="$1" @@ -272,13 +272,14 @@ detect_team() { log_info "Используется автоопределенная команда: $final_team" else log_error "Не удалось определить команду. Укажите явно через -t" - echo "Доступные команды:" + echo "Доступные команды:" >&2 for ip in "${!hosts[@]}"; do - echo " $ip: ${hosts[$ip]}" + echo " $ip: ${hosts[$ip]}" >&2 done exit 1 fi + # Возвращаем только чистую строку с названием команды (без цветовых кодов) echo "$final_team" } @@ -426,9 +427,15 @@ main() { # Настройка виртуального окружения setup_venv - # Определение команды + # Определение команды - ТЕПЕРЬ БЕЗ временного файла final_team=$(detect_team "$team") - log_info "Финальная команда: $final_team" + log_info "Финальная команда: '$final_team'" + + # Проверка что команда не пустая и не содержит спецсимволов + if [[ -z "$final_team" || "$final_team" =~ [^a-zA-Z0-9[:space:]-] ]]; then + log_error "Некорректное название команды: '$final_team'" + exit 1 + fi # Настройка firewall setup_firewall @@ -471,7 +478,7 @@ main() { log_info "" log_info "Проверка работы:" log_info " Проверить процессы: ps aux | grep get_data.py" - log_info " Проверить логи: tail -f /root/RFB/logs/*.log" + log_info " Проверить логи: tail -f /root/RFB/logs/*.log 2>/dev/null || echo 'Директория логов не найдена'" log_info "==================================================" }