セキュリティ上の理由から(私は開発者です)、ログファイルが書き込まれる本番サーバーへのコマンドラインアクセスがありません。ただし、HTTP経由でこれらのログファイルにアクセスすることはできます。HTTPのみを使用してプレーンテキストファイルを「追跡」できる「tail-f」のようなユーティリティはありますか?
5 に答える
これは、HTTPサーバーがリソースの一部を返す要求を受け入れる場合に実行できます。たとえば、HTTPリクエストにヘッダーが含まれている場合:
範囲:bytes = -500
応答には、リソースの最後の500バイトが含まれます。それをフェッチして、行などに解析することができます。これを実行する既製のクライアントはわかりません。ジョブを実行するためのスクリプトを作成します。
Hurlを使用して、(公開されているリソースからの)ヘッダーを試すことができます。
同じ目的でbashスクリプトを作成しました。ここで見つけることができますhttps://github.com/maksim07/url-tail
小さなJavaユーティリティを使用して、ApcheHTTPライブラリを使用して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
}
PsExecを使用して、リモートコンピューターでコマンドを実行できます。Windowsのtailコマンドは、http://tailforwin32.sourceforge.net/にあります。
HTTPである必要がある場合は、それを簡単に実現するための軽量Webサービスを作成できます。たとえば、指定されたファイル内の0行目から200行目までのテキストを読み取ります。
output.txt
2秒ごとにURLコンテンツをフェッチし、ローカルファイルと比較してから、同じファイルに差分を追加する簡単なbashスクリプトを作成しました。
JenkinsパイプラインでAWS増幅ログをストリーミングしたかった
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