User Tools

Site Tools


средства_программирования_shell

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
средства_программирования_shell [2026/10/13 13:03]
val [Тестирование Web приложения на shell]
средства_программирования_shell [2026/10/14 07:42] (current)
val [Тестирование Web приложения на shell]
Line 519: Line 519:
  
   * На примере [[Web интерфейс к почте#​Roundcube]]   * На примере [[Web интерфейс к почте#​Roundcube]]
-  * **Промпт:​** напиши bash скрипт для тестирования работы roundcube, подключение,​ получение токенов,​ отключение,​ логин и пароль в переменные +  * **Промпт:​** напиши bash скрипт для тестирования работы roundcube, подключение,​ получение токенов,​ отключение,​ логин и пароль в переменные,​ результат через код возврата
- +
-  * Автор Google AI +
-<​code>​ +
-root@server:​~#​ cat /​usr/​local/​bin/​roundcube_monitor.sh +
-</​code><​code>​ +
-#​!/​bin/​bash +
- +
-# ============================================================================== +
-# НАСТРОЙКИ ПОДКЛЮЧЕНИЯ И АВТОРИЗАЦИИ +
-# ============================================================================== +
-ROUNDCUBE_URL="​http://​server.corp13.un/​mail" ​ # Укажите URL вашего Roundcube без слэша на конце +
-USERNAME="​student" ​        # Логин +
-PASSWORD="​password" ​              # Пароль +
- +
-# Файлы для хранения временных данных сессии +
-COOKIE_JAR=$(mktemp) +
- +
-echo "=== Старт тестирования Roundcube ===" +
- +
-# ============================================================================== +
-# ШАГ 1: Подключение к странице логина и получение CSRF-токена +
-# ============================================================================== +
-echo "1. Подключение к главной странице и получение токена..."​ +
- +
-# Запрашиваем страницу входа, сохраняем куки и вытаскиваем hidden-поле _token +
-LOGIN_PAGE_HTML=$(curl -s -L -c "​$COOKIE_JAR"​ "​$ROUNDCUBE_URL/"​) +
- +
-# Извлекаем значение токена с помощью grep и sed +
-TOKEN=$(echo "​$LOGIN_PAGE_HTML"​ | grep -oE '​name="​_token"​ value="​[^"​]+"'​ | sed '​s/​name="​_token"​ value="//;​s/"//'​) +
- +
-if [ -z "​$TOKEN"​ ]; then +
-    echo "[-] Ошибка:​ Не удалось получить CSRF-токен (_token). Проверьте URL или структуру страницы."​ +
-    rm -f "​$COOKIE_JAR"​ +
-    exit 1 +
-fi +
- +
-echo "[+] Токен успешно получен:​ $TOKEN"​ +
- +
-# ============================================================================== +
-# ШАГ 2: Авторизация (Логин) +
-# ============================================================================== +
-echo "2. Выполнение авторизации..."​ +
- +
-# Отправляем POST-запрос с куками из предыдущего шага и необходимыми параметрами +
-# Roundcube обычно ожидает: _task=login,​ _action=login,​ _timezone, _url, _user, _pass, _token +
-AUTH_RESPONSE=$(curl -s -L -b "​$COOKIE_JAR"​ -c "​$COOKIE_JAR"​ -X POST \ +
-    --data-urlencode "​_task=login"​ \ +
-    --data-urlencode "​_action=login"​ \ +
-    --data-urlencode "​_timezone=Europe/​Moscow"​ \ +
-    --data-urlencode "​_url="​ \ +
-    --data-urlencode "​_user=$USERNAME"​ \ +
-    --data-urlencode "​_pass=$PASSWORD"​ \ +
-    --data-urlencode "​_token=$TOKEN"​ \ +
-    "​$ROUNDCUBE_URL/?​_task=login"​) +
- +
-# ============================================================================== +
-# ШАГ 3: Проверка успешности входа +
-# ============================================================================== +
-# Обычно при успешном входе Roundcube перенаправляет на ?​_task=mail +
-# Мы проверим наличие в ответе признаков успешного входа (например,​ смены таски на mail) +
-if echo "​$AUTH_RESPONSE"​ | grep -q '​_task=mail'​ || echo "​$AUTH_RESPONSE"​ | grep -q '​rcmail.env';​ then +
-    echo "[+] Авторизация успешна! Доступ к почтовому ящику получен."​ +
-    STATUS=0 +
-else +
-    echo "[-] Ошибка авторизации! Проверьте логин/​пароль или конфигурацию Roundcube."​ +
-    STATUS=1 +
-fi +
- +
-# ============================================================================== +
-# ШАГ 4: Отключение (Выход) и очистка +
-# ============================================================================== +
-echo "3. Отключение и завершение сессии..."​ +
- +
-# Для выхода Roundcube использует GET-запрос с параметром _task=logout и валидным токеном +
-# В новых версиях токен для logout может генерироваться заново,​ но отправка базового logout с куками завершает сессию +
-curl -s -b "​$COOKIE_JAR"​ "​$ROUNDCUBE_URL/?​_task=logout"​ > /dev/null +
- +
-# Удаляем временный файл с куками +
-rm -f "​$COOKIE_JAR"​ +
- +
-echo "=== Тестирование завершено ===" +
-exit $STATUS +
-</​code>​ +
   * Автор [[https://​www.perplexity.ai/​]]   * Автор [[https://​www.perplexity.ai/​]]
 <​code>​ <​code>​
средства_программирования_shell.1791885780.txt.gz · Last modified: 2026/10/13 13:03 by val