Назад | Перейти на главную страницу

Могу ли я следить за http-ресурсом?

Есть ли способ контролировать такой ресурс, как http://someserver.com/logs/server.log ?

Это то, что я бы сделал для локального файла.

tail -F /var/logs/somefile.log

Я хотел бы что-то подобное для файла, доступного по протоколу http

Это сделает это:

#!/bin/bash

file=$(mktemp)
trap 'rm $file' EXIT

(while true; do
    # shellcheck disable=SC2094
    curl --fail -r "$(stat -c %s "$file")"- "$1" >> "$file"
done) &
pid=$!
trap 'kill $pid; rm $file' EXIT

tail -f "$file"

Это не очень удобно на веб-сервере. Вы можете заменить true с участием sleep 1 быть менее ресурсоемким.

подобно tail -f, тебе надо ^C когда вы закончили смотреть вывод, даже когда вывод сделан.

Вы можете использовать скрипт из https://stackoverflow.com/a/1102346/401005 если вы умеете запускать скрипты php. Вам следует добавить flush(); после echo.

Когда используешь curl --no-buffer http://the/url у вас должен быть подходящий результат

я стараюсь htail (https://github.com/vpelletier/htail), и, похоже, он неплохо справляется со своей задачей.

Если вам нужен тип дозорной программы, как мне было нужно (обновлять только при ответе)

#!/bin/bash

while true; do
    echo "y to curl, n to quit"
    read -rsn1 input

    if [ "$input" = "y" ]; then
        curl $1
    elif [ "$input" = "n" ]; then
        break
    fi
done

Тогда беги curlTail.sh http://wherever

Ты получишь

18:02:44] $: ~ \> curlTail.sh http://wherever
y to curl, n to quit

Когда вы нажмете y, он скрутит его, а затем снова предложит вам.

Я написал простой сценарий bash для получения содержимого URL каждые 2 секунды и сравнения с локальным файлом output.txt затем добавьте разницу в тот же файл

Я хотел транслировать журналы расширения AWS в моем конвейере Jenkins

while true; do comm -13 --output-delimiter="" <(cat output.txt) <(curl -s "$URL") >> output.txt; sleep 2; done

не забудьте создать пустой файл output.txt файл сначала

: > output.txt

просмотреть трансляцию:

tail -f output.txt

Лучшее решение:

Я нашел лучшее решение, используя wget здесь:

while true; do wget -ca -o /dev/null -O output.txt "$URL"; sleep 2; done

https://superuser.com/a/514078/603774