Я хотел бы загрузить веб-страницы при отправке URL-адресов из stdin. По существу, один процесс непрерывно создает URL-адреса для stdout/file, и я хочу связать их с wget или curl. (Подумайте об этом как о простом веб-гусеничном устройстве, если хотите).wget или curl from stdin
Это, кажется, работает нормально:
tail 1.log | wget -i - -O - -q
Но когда я использую 'хвост -f' и больше не работает (буферизация или Wget ждет EOF?):
tail -f 1.log | wget -i - -O - -q
Может ли кто-нибудь предоставить решение с помощью wget, curl или любого другого стандартного инструмента Unix? В идеале я не хочу перезапускать wget в цикле, просто продолжайте загружать URL-адреса при их появлении.
С 'xargs'' wget' получает URL-адрес в качестве параметра, так что вам больше не нужно '-i''. 'tail -f 1.log | xargs -n1 wget -O - -q' – pabouk
это запустит новый процесс wget за URL-адрес –
Если это работает на общей машине, вам может потребоваться узнать, что любой другой пользователь может прочитать ваши параметры с помощью команды «ps», поэтому не ставьте пароли и т. д. в свои URL-адреса. Используйте одно из решений, которое не включает в себя преобразование stdin в параметры, если это может быть проблемой (администраторы с корневым доступом к машине могут, конечно, по-прежнему проверять, какие URL-адреса вы извлекаете, но предположительно вы доверяете администраторам больше, чем доверяете случайным другие пользователи). –