2017-05-30 14 views
-4

Linuxシェルでは、正規表現を使用して他のコマンドの出力をフィルタリングする方法を説明します。 シスコのデバイスに似ています。 bインタフェースで、intに関する情報のみを表示します。 私の要件は、 "Dogstatsd(v 5.12.0)"とステータス日時&から表示する下のコマンドのフィルタ出力です。Linuxシェルでは、regexを使用して他のコマンドの出力をフィルタリングする方法を説明します。

私はエージェントを自動再起動するスクリプトを書くために特定の基準でこのo/pを使うことができます。

ルートの@ ADCD:2017年5月30日午前八時20分13秒(17秒前) :

コレクター(V 5.12)

ステータス日付-v〜#サービスdatadogエージェント情報Pid:7864 プラットフォーム:Linux-3.11.0-24-generic-x86_64-with-Ubuntu-13.10-saucy Pythonバージョン:2.7.13,64bit ログ:、/var/log/datadog/collector.log、syslog :/ dev/log

クロック ======

NTPオフセット:0.018秒 システムUTC時間:2017年5月30日06:20:31.535928

パス=====

conf.d:の/ etc/DD-剤/ CONFを。 D checks.d:

ホスト名 =========

ソケットホスト名を/opt/datadog-agent/agent/checks.d:ADCD ソケット-FQDN: ホスト名をADCD :adcd

チェック======

アパッチ(5.0) --------------- - インスタンス#0 [OK] - 12メトリクス、0収集イベント& 1サービスチェック

ネットワーク(5.0) ---------------- - インスタンス#0 [OK] - 収集16メトリクス、0イベント& 0サービスチェック

ディレクトリ(5.0) ------------------ - インスタンス#0 [OK] - 収集17メトリクス、0イベント& 0サービスチェック

NTP(5.0) --- --------- - 収集されたメトリック、0イベント&サービスチェック

ディスク(5。0) ------------- - インスタンス#0 [OK] - 収集24メトリクス、0イベント& 0サービスチェック

エミッタ========

  • http_emitter [OK]

====================

Dogstatsd(V 5.12)

ステータス日付:2017-05-30 08:20:24(7s前) Pid:7859 プラットフォーム:Linux-3.11.0-24-generic-x86_64-with-Ubuntu-13.10-saucy Pythonバージョン:2.7 0.13、64ビット ログ:、/var/log/datadog/dogstatsd.logは、Syslog:は/ dev /ログイン

フラッシュ回数:583466 パケット数:毎秒333155の パケット:0.0 メトリック数:1 イベント数:0 サービスチェック件数:1

==================

フォワーダー(V 5.12)

ステータス日時:2017年5月30日8時20分29秒(2秒前) でPid:8868 プラットフォーム:Linuxの-3.11.0-24汎用-x86_64を-と-Ubuntu-13.10-生意気 Pythonのバージョン:2.7.13、64ビット ログ:、/var/log/datadog/forwarder.logは、Syslog:は/ dev /ログイン

キューサイズ:422バイト キューの長さ:1 フラッシュ数:1102592 受け取ったトランザクション:879956 トランザクションがフラッシュされました:879955 トランザクションが拒否されました:0 APIキーステータス:API K EYは

======================

トレースエージェント(V 5.12)

(ポート8126を実行していない有効です。 )

ルートの@ ADCD:〜#

答えて

0

私は、プログラムに慣れていないんだけど、私は前に、このような問題を解決しなければなりませんでした。私はあなたがいつも 'Dogstatsd'という行で必要な出力を開始し、常にいくつかの等号で終了することを前提にしています。その上で、あなたはこのようなスクリプトアウトあなたの出力を可能性:我々は

#!/bin/bash 

service datadog-agent info -v > /tmp/DogstatsDump.txt 

LinesTotal=$(cat /tmp/DogstatsDump.txt | wc -l) 

StartOfOutput=$(grep /tmp/DogstatsDump.txt -ne '^Dogstatsd (v' | cut -d':' -f 1) 

LengthOfOutput=$(tail -n $(echo "$LinesTotal - $StartOfOutput + 1" | bc)/tmp/DogstatsDump.txt | grep -ne '^==========' | head -n 1 | cut -d':' -f 1) 

tail -n $(echo "$LinesTotal - $StartOfOutput + 1" | bc) /tmp/DogstatsDump.txt | head -n $(echo "$LengthOfOutput + 1" | bc) 

rm /tmp/DogstatsDump.txt 

私たちは、ファイルの長さを定義する値を取得し、長さあなたが欲しい最初の行、出力が終了する長さを打つ、とまでそれに応じて調整する。

関連する問題