【備忘録】ちょっとしたメモ書き【備忘録】

自分でやったこと調べてみた事とのメモ書きブログです
主に周辺機器の翻訳した取り説や故障修理の手順を記録しています。

PowerShellでログファイルから特定の文字を検知したらなにかしてみる

2023年06月07日 | Windows PowerShell

# ログファイルのパス
$logFilePath = "C:\path\to\logfile.txt"

# 検出するキーワードと処理のマッピング
$keywords = @{
    "キーワード1" = {
        # キーワード1が検出された場合の処理
        Write-Host "キーワード1がログファイル内で見つかりました。"
        # ここにキーワード1が検出された時の処理を追加する
    }
    "キーワード2" = {
        # キーワード2が検出された場合の処理
        Write-Host "キーワード2がログファイル内で見つかりました。"
        # ここにキーワード2が検出された時の処理を追加する
    }
    # 追加のキーワードと処理をここに追加する
}

# ログファイルを読み込み、キーワードの検出と対応する処理の実行
$logContent = Get-Content -Path $logFilePath -Raw
foreach ($keyword in $keywords.Keys) {
    if ($logContent -match $keyword) {
        & $keywords[$keyword]
    }
}

【解説】

$keywordsという連想配列を使用して、キーワードとそれに対応する処理をマッピングしています。キーワードと処理の組み合わせは$keywords変数に追加できます。

キーワードがログファイル内で検出されると、対応する処理が実行されます。各キーワードの処理は、# ここにキーワードXが検出された時の処理を追加するのコメントの下に追加してください。

複数のキーワードを追加する場合は、$keywords変数に追加のキーワードと処理を追加してください。キーワードと処理は連想配列の形式で追加

※忘備録、使うときは自己責任

参考文献

Windows PowerShell逆引きハンドブック | 蒲生睦男 | 工学 | Kindleストア | Amazon

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ご都合でVIを使いたくないときの・・・・・ちょっと書き込み

2023年06月07日 | UNIX忘備録

以下テンプレ

echo "12345678" > XXX.dat

XXX.datファイルに「12345678」という8桁の数字を書き込み

 

 

printf "12345678\n" > XXX.dat

XXX.datファイルに「12345678」という8桁の数字を書き込みます。printfコマンドの場合、\nは改行

 

 

echo "12345678" | tee XXX.dat

標準出力の内容をXXX.datファイルに書き込むため、標準出力に「12345678」という8桁の数字を出力し、それをXXX.datファイルに書き込み

 

結果はどれでも一緒、環境や趣味でお好きにどうぞ

 

※忘備録

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

UNIXで特定のログを絞るには

2023年06月07日 | UNIX忘備録

1【例文】grep "キーワード" $(ls -t /var/log/* | head -1)

【解説】

  1. ls -t /var/log/*コマンドは、/var/log/ディレクトリ内のすべてのファイルの一覧を作成します。-tオプションは、最新のファイルが一覧の先頭に表示されるようにします。
  2. head -1コマンドは、一覧の先頭のファイルのみを抽出します。
  3. $(command)は、サブシェル内でコマンドを実行し、その結果を取得するための構文です。これにより、最新のログファイル名が取得されます。
  4. grep "キーワード" ファイル名は、指定されたキーワードを持つ行を含むファイル内のテキストを検索します。上記のコマンドでは、最新のログファイルに対してgrepコマンドが実行されます。

2【例文】grep "キーワード" $(find /var/log -type f -mtime 0 -o -mtime 1) 

【解説】

  1. find /var/log -type f -mtime 0 -o -mtime 1コマンドは、/var/log/ディレクトリ内のファイルを検索します。

    • -type fは、ファイルのみを対象に検索することを指定します。
    • -mtime 0は、最終変更日が現在の日付と一致するファイルを選択します(当日のログ)。
    • -oは、またはの意味で、前の条件に加えて次の条件も適用します。
    • -mtime 1は、最終変更日が現在の日付の前日と一致するファイルを選択します(前日のログ)。
  2. $(command)は、サブシェル内でコマンドを実行し、その結果を取得するための構文です。これにより、当日または前日のログファイル名が取得されます。

  3. grep "キーワード" ファイル名は、指定されたキーワードを持つ行を含むファイル内のテキストを検索します。上記のコマンドでは、当日または前日のログファイルに対してgrepコマンドが実行されます。

このコマンドを使用すると、指定したキーワードを持つ当日または前日のログの内容が表示されます。必要に応じてパスやキーワードを調整してください。


3【例文】grep "キーワード" $(find /var/log -type f -mtime 0 -o -mtime 1) | while read -r line; do echo "$(date -d "$(echo "$line" | awk '{print $1 " " $2 " " $3}')" +'%Y:%m:%d:%H:%M:%S') $(echo "$line" | awk '{$1=$2=$3=""; print $0}')" ; done

【解説】

  1. grep "キーワード" $(find /var/log -type f -mtime 0 -o -mtime 1)コマンドは、当日または前日のログファイルからキーワードを検索します。

  2. while read -r line; do ... doneは、grepコマンドの出力を1行ずつ処理するためのループを作成します。

  3. date -d "$(echo "$line" | awk '{print $1 " " $2 " " $3}')" +'%Y:%m:%d:%H:%M:%S'は、echo "$line" | awk '{print $1 " " $2 " " $3}'で抽出したタイムスタンプを指定した形式に変換します。

  4. echo "$line" | awk '{$1=$2=$3=""; print $0}'は、ログメッセージ部分を表示します。

このコマンドを使用すると、指定したキーワードを含む当日または前日のログが、Y:M:D:h:m:s形式のタイムスタンプとともに表示されます。


4【例文】grep "キーワード" $(find /var/log -type f -mtime 1) | wc -l

  1. find /var/log -type f -mtime 1コマンドは、前日のログファイルを検索します。

  2. grep "キーワード"は、キーワードを含む行を検索します。

  3. wc -lコマンドは、行数をカウントします。


  • 必要に応じてパスを調整してください。
  • キーワードには、実際に検索したいキーワードを指定してください。
  • コマンドは特定のログ形式やファイル名に依存しており、環境によって異なる場合があります。必要に応じて適宜調整してください。
  • 忘備録なので責任はとれませんNCでお願いします。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする