Аналогичный вопрос к Как получить ответ udp с помощью netcat за исключением того, что OP был удовлетворен интерактивным использованием nc (и у меня пока нет репутации, чтобы комментировать!)
Мне нужно написать сценарий bash и обработать ответ. Как следует изменить приведенный ниже код, чтобы получить ответ в файле response.txt или иным образом захватить ответ для последующих строк кода в bash?
echo "request" | nc -u 1.1.1.1 9999 > response.txt
Серверу может потребоваться несколько секунд или даже минут для генерации ответа и ответа. Когда я пытаюсь сделать следующее, я сразу же возвращаюсь в командную строку, а response.txt пуст.
echo "request" | nc -u 1.1.1.1 9999 | tee response.txt
(Я действительно подтвердил, что запуск nc -u 1.1.1.1 9999 и ввод «запроса» в отдельной строке возвращает ожидаемый ответ. Но как его захватить?)
Заранее спасибо!
Когда я попробовал nc
команда, которую вы использовали, зависла и никогда не выходила. Итак, я добавил -q 2
возможность тайм-аута через 2 секунды, и это работает для меня:
chicks@silver 17:34:54 ~ !548 $ echo "foo" | nc -u 127.0.0.1 7777 -q 2 > /tmp/z
chicks@silver 17:34:59 ~ !549 $ cat /tmp/z
foo
Так что вам просто нужно выбрать тайм-аут, с которым можно жить. :)