7

出于安全原因(我是开发人员),我没有对写入日志文件的生产服务器的命令行访问权限。但是,我可以通过 HTTP 访问这些日志文件。是否有“tail -f”形式的实用程序可以“跟随”仅使用 HTTP 的纯文本文件?

4

5 回答 5

6

如果 HTTP 服务器接受返回部分资源的请求,您可以执行此操作。例如,如果 HTTP 请求包含标头:

范围:字节=-500

响应将包含资源的最后 500 个字节。您可以获取它,然后将其解析为行等。我不知道有任何现成的客户端会为您执行此操作 - 我会编写一个脚本来完成这项工作。

您可以使用Hurl来试验标头(来自公开可用的资源)。

于 2009-11-02T09:24:07.843 回答
1

我出于同样的目的编写了一个 bash 脚本。你可以在这里找到它https://github.com/maksim07/url-tail

于 2014-03-04T12:14:11.977 回答
1

您可以使用小型 java 实用程序使用 Apche HTTP 库通过 Http 读取日志文件。

HttpClient client = HttpClientBuilder.create().build();
    HttpGet request = new HttpGet(uri);
    HttpResponse response = client.execute(request);
    BufferedReader rd = new BufferedReader(new InputStreamReader(
            response.getEntity().getContent()));
    String s = "";
    while ((s = rd.readLine()) != null) {
       //Process the line
    }
于 2014-09-19T08:42:32.170 回答
0

您可以使用PsExec在远程计算机上执行命令。windows的tail命令可以在http://tailforwin32.sourceforge.net/找到

如果它必须是 HTTP,您可以编写一个轻量级的 Web 服务来轻松实现。例如,从第 0 行到第 200 行读取指定文件中的文本。

于 2009-10-29T18:45:47.823 回答
0

我编写了一个简单的 bash 脚本,每 2 秒获取一次 URL 内容并与本地文件进行比较,output.txt然后将差异附加到同一个文件中

我想在我的 Jenkins 管道中流式传输 AWS 放大日志

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

不要忘记先创建空文件output.txtfile

: > 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

于 2020-06-12T15:48:06.813 回答