Bash скрипт, использующий curl для обращения к URL-адресам, предоставленным txt файлом - PullRequest
0 голосов
/ 05 мая 2020

Я хочу, чтобы скрипт с curl попадал по некоторым специальным ссылкам, которые у меня есть в txt файле. Только попасть по URL. Ничего более.

Я написал это:

#!/bin/bash

url="https://example.com"
for i in $(cat /home/warm_script/urls.txt); do
content="$(curl -m '20' -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 (m__warmer)' "$url/$i")"
echo "$content" >> /home/warm_script/output.txt
done

Это работает, но дает мне все содержимое страницы. Я использовал output.txt только для того, чтобы увидеть результаты. Если это работает. Я действительно не хочу брать весь исходный код страницы

Я воспользуюсь этим скриптом для подогрева кеша страницы

Что я делаю не так, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 05 мая 2020

В качестве упрощенного варианта использования попробуйте следующее:

outputFile="/home/warm_script/output.txt"
url="http://example.com"
if curl -m '20' -o /dev/null --fail --silent $url; 
then 
    echo "Success $url" >> "${outputFile}"
else 
    echo "Failed $url" >> "${outputFile}"
fi

Ваш вывод l oop будет выглядеть примерно так:

Success http://example.com/a.html
Success http://example.com/b.html
Failed http://example.com/c.html
Success http://example.com/d.html
1 голос
/ 05 мая 2020

Вы можете указать curl не выводить содержимое с помощью -o /dev/null и пересылать информацию о ходе выполнения в файл с помощью 2>>/home/warm_script/output.txt:

#!/bin/bash

url="https://example.com"
for i in $(cat /home/warm_script/urls.txt); do
curl -m '20' -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 (m__warmer)' "$url/$i" -o /dev/null /home/warm_script/output.txt
done

Вы также можете использовать параметр -I, чтобы просто напечатайте заголовки:

content="$(curl -m '20' -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 (m__warmer)' "$url/$i" -I)"

Если вам просто нужен код состояния, вы можете использовать -o /dev/null -w '%{http_code}\n' -s (см. этот ответ :

content="$(curl -m '20' -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 (m__warmer)' "$url/$i" -o /dev/null -w '%{http_code}\n' -s)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...