/
lmaxyz
/
telegraf
Обзор
Документация
Войти
/
lmaxyz
/
telegraf
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
deploy_script_bash.sh
131 строка
5 KB
Nikolay Sinyov
добавил скрипт для деплоя приложения на устройство
09 сен 2025, 18:10
09 сен 2025, 18:10
3668c97
Код
Авторство
О чём код?
#!/bin/bash # Параметры по умолчанию PHONE_IP="" PHONE_USER="defaultuser" ARCH="armv7hl" # Архитектура по умолчанию для AuroraOS # Функция справки show_help() { echo "Использование: $0 -i IP [-u USER] [-a ARCH]" echo " -i, --ip IP Обязательный. IP адрес телефона" echo " -u, --user USER Имя пользователя (по умолчанию: defaultuser)" echo " -a, --arch ARCH Архитектура пакета (по умолчанию: armv7hl)" echo " Возможные значения: armv7hl, aarch64, x86_64, noarch" echo " -h, --help Показать эту справку" echo "" echo "Примеры:" echo " $0 -i 192.168.2.7" echo " $0 --ip 192.168.1.100 --user nemo --arch aarch64" echo " $0 -i 192.168.2.7 -a noarch" } # Проверяем, что есть хотя бы один аргумент if [ $# -eq 0 ]; then echo "Ошибка: Не указаны параметры" show_help exit 1 fi # Обработка аргументов командной строки while [[ $# -gt 0 ]]; do case $1 in -i|--ip) PHONE_IP="$2" shift 2 ;; -u|--user) PHONE_USER="$2" shift 2 ;; -a|--arch) ARCH="$2" shift 2 ;; -h|--help) show_help exit 0 ;; *) echo "Неизвестный параметр: $1" show_help exit 1 ;; esac done # Проверяем, что IP указан if [ -z "$PHONE_IP" ]; then echo "Ошибка: Не указан IP адрес телефона (используйте -i)" show_help exit 1 fi # Проверяем корректность архитектуры VALID_ARCHS=("armv7hl" "aarch64" "x86_64" "noarch") if [[ ! " ${VALID_ARCHS[@]} " =~ " ${ARCH} " ]]; then echo "Ошибка: Неподдерживаемая архитектура '$ARCH'" echo "Допустимые архитектуры: ${VALID_ARCHS[*]}" exit 1 fi # Поиск RPM файла для указанной архитектуры RPM_FILE=$(find . -name "*.$ARCH.rpm" | grep -v -E '(debuginfo|debugsource)' | head -n 1) # Если не нашли файл для указанной архитектуры, пробуем найти любой RPM if [ -z "$RPM_FILE" ]; then echo "Предупреждение: Не найден RPM файл для архитектуры $ARCH" echo "Ищем любой подходящий RPM файл..." RPM_FILE=$(find . -name "*.rpm" | grep -v -E '(debuginfo|debugsource)' | head -n 1) if [ -z "$RPM_FILE" ]; then echo "Ошибка: Не найден подходящий RPM файл" exit 1 fi echo "Найден файл: $RPM_FILE" # Заменяем проблемный read -p на более надежную конструкцию echo -n "Продолжить установку? (y/N): " read -r CONTINUE if [[ ! "$CONTINUE" =~ ^[Yy]$ ]]; then exit 1 fi fi REMOTE_PATH="/home/$PHONE_USER/$(basename "$RPM_FILE")" echo "==========================================" echo "Установка на: $PHONE_USER@$PHONE_IP" echo "Архитектура: $ARCH" echo "Пакет: $(basename "$RPM_FILE")" echo "==========================================" echo "1. Копируем пакет..." scp "$RPM_FILE" "$PHONE_USER@$PHONE_IP:$REMOTE_PATH" echo "2. Устанавливаем через gdbus..." INSTALL_OUTPUT=$(ssh "$PHONE_USER@$PHONE_IP" "gdbus call --system --dest ru.omp.APM --object-path /ru/omp/APM --method ru.omp.APM.Install $REMOTE_PATH \"{}\" 2>&1") # Анализируем результат установки if [[ "$INSTALL_OUTPUT" == *"DowngradeAttempt"* ]]; then echo "ОШИБКА: Попытка установки более старой версии" echo "Сообщение: $INSTALL_OUTPUT" echo "Установка прервана." exit 1 elif [[ "$INSTALL_OUTPUT" == *"Error:"* ]] || [[ "$INSTALL_OUTPUT" == *"error"* ]] || [[ "$INSTALL_OUTPUT" == *"fail"* ]]; then echo "ОШИБКА установки:" echo "$INSTALL_OUTPUT" echo "Установка прервана." exit 1 elif [[ "$INSTALL_OUTPUT" == *"true"* ]] || [[ "$INSTALL_OUTPUT" == *"()"* ]]; then echo "Установка успешно завершена!" echo "3. Проверяем установку..." ssh "$PHONE_USER@$PHONE_IP" "ls /usr/share | grep telegraf" echo "4. Готово! Установка завершена." else echo "Неизвестный ответ от системы установки:" echo "$INSTALL_OUTPUT" echo "Проверяем установку..." ssh "$PHONE_USER@$PHONE_IP" "ls /usr/share | grep telegraf" echo "Процесс завершен." fi