Я пытаюсь написать команду BASH, которая использует CURL для отправки запроса GET на две разные веб-страницы, но использует то же соединение. Для меня это похоже на отправку запроса GET на страницу входа в систему для аутентификации на сервере, а затем второй запрос имитирует автоматическое перенаправление на главную страницу, которая произошла в веб-браузере (через meta refresh tag). Мне нужно связать запросы, потому что содержимое домашней страницы (сгенерированной сервером) будет отличаться для гостевого пользователя, чем аутентифицированный пользователь.BASH CURL: Не закрывайте соединение между запросами при последовательном запуске
Я попробовал эту команду первой, основываясь на рекомендации от SOF post (предположим, что переменные $IP
и $PORT
уже определились с действительными значениями):
curl -u user:pass ${IP}:${PORT}/login.php && curl ${IP}:${PORT}/index.php
Однако, я всегда получаю что-то вроде этого происходит между концом первый GET и начало второго:
* Connection #0 to host 10.0.3.153 left intact
* Closing connection #0
Так было ли сообщение SOF неправильно? В любом случае, делая эту команду будет успешно держать соединение открытым между двумя запросами:
curl -u user:pass ${IP}:${PORT}/login.php ${IP}:${PORT}/index.php
Однако, я действительно предпочел бы решение ближе к бывшей команде, чем вторая команда. Основная причина заключается в том, чтобы отделить вывод с первой страницы по сравнению со второй страницей на два разных выходных файла. Так что я хочу сделать что-то вроде:
curl page1.html > output1 && curl page2.html > output2
Конечно, мне нужно повторно использовать то же самое соединение, так как содержимое page2.html зависит от меня и делает запрос на page1.html в том же HTTP-сессии.
Я также открыт для решений, которые используют netcat или wget, НО НО PHP!
Относительно '&&': Это всего лишь обозначение Bash для запуска двух команд один за другим с ограничением, что вторая команда выполняется только в том случае, если первая выполнена. (Другими словами, если 'curl -u user: pass $ {IP}: $ {PORT}/login.php' возвращает ошибку, тогда' curl $ {IP}: $ {PORT}/index.php' не будет быть запущенным.) Это не имеет никакого отношения к открытию соединения или тому подобному. – ruakh