Как выполнить два curl запроса одновременно и получить ответы обоих запросов?

Как объединить ответы на две строки, полученные в результате запроса вида "curl -s http://x.x.x.x; curl http://y.y.y.y", в одну строку?
  • 17 декабря 2023 г. 9:57
Ответы на вопрос 2
Для выполнения двух curl запросов одновременно и получения ответов обоих запросов можно использовать параллельное выполнение с помощью инструмента GNU Parallel.

Прежде всего, убедитесь, что GNU Parallel установлен на вашей системе. Если он не установлен, вы можете установить его с помощью пакетного менеджера вашей операционной системы.

Затем вы можете использовать следующую команду для выполнения двух curl запросов одновременно и получения ответов обоих запросов:

```
parallel -j2 "curl -s http://x.x.x.x" "curl -s http://y.y.y.y" ::: :::
```

В этой команде `parallel` используется для параллельного выполнения двух curl запросов. `-j2` указывает, что мы хотим выполнять две команды одновременно. `"curl -s http://x.x.x.x"` и `"curl -s http://y.y.y.y"` - это два curl запроса, которые вы хотите выполнить. Замените `http://x.x.x.x` и `http://y.y.y.y` на фактические URL-адреса, которые вам нужны.

Используя `::: :::` в конце команды, мы указываем GNU Parallel использовать пустые списки входных данных, чтобы команда была выполнена дважды. Таким образом, два curl запроса выполняются одновременно.

Результаты обоих запросов будут отображены в выводе в формате:

```
<ответ на первый curl запрос>
<ответ на второй curl запрос>
```

Чтобы объединить ответы на две строки в одну строку, вы можете использовать следующую команду:

```
parallel -j2 "curl -s http://x.x.x.x" "curl -s http://y.y.y.y" ::: ::: | paste -sd ' ' -
```

В этой команде `paste -sd ' ' -` используется для объединения строк ответов в одну строку, разделенную пробелами.

Обратите внимание, что в этом примере используется опция `-s` в `curl`, чтобы выключить вывод прогресса и другой лишней информации.
Поместите ответы в две разные переменные, затем выведите их через echo , например. Или прямо внутрь вставьте: echo $(curl -s 1) $(curl -s 2) .
Похожие вопросы