Windows 10 の Powershell で Syslog 受信するスクリプト
ネットワーク機器の吐き出すSyslogをファイルに保存したくは無いけど、リアルタイムに流れてくるものを拾って眺めておきたい。というシチュエーションが私にはあるので、適当なプログラムが無いかと探していたら、Powershell で実現する方法が載っていたので紹介します。
見つけたのはこちらのWebページです。こちらに掲載されているスクリプトをベースにアレンジしました。
WindowsでPowershellだけでSyslogを受信してみる。 | 技術的な何か。
また、Syslog のセレクターの計算処理についてはこちらが詳しい。
以下、スクリプト(インデントが反映されてないですがご容赦を)
SyslogMon.ps1
$Udp = New-Object Net.Sockets.UdpClient -ArgumentList 514
$Sender = $nullAdd-Type -TypeDefinition @"
public enum Syslog_Facility
{
kern,
user,
mail,
system,
security,
syslog,
lpr,
news,
uucp,
clock,
authpriv,
ftp,
ntp,
logaudit,
logalert,
cron,
local0,
local1,
local2,
local3,
local4,
local5,
local6,
local7,
}
"@
Add-Type -TypeDefinition @"
public enum Syslog_Severity
{
Emergency,
Alert,
Critical,
Error,
Warning,
Notice,
Info,
Debug
}
"@Write-Host "Starting Syslog Monitor"
while($true) `
{
if($Udp.Available) `
{
$Buffer = $Udp.Receive([ref]$Sender)
$RemoteHostIpAddress = $Sender.Address.ToString()
$MessageString = [Text.Encoding]::UTF8.GetString($Buffer)
## Syslog セレクター情報の抽出
$Priority = [Int]($MessageString -Replace "<|>.*")
[int]$FacilityInt = [Math]::truncate([decimal]($Priority / 8))
$Facility = [Enum]::ToObject([Syslog_Facility], $FacilityInt)
[int]$SeverityInt = $Priority - ($FacilityInt * 8 )
$Severity = [Enum]::ToObject([Syslog_Severity], $SeverityInt)## Syslog セレクターを除去
$MessageString = $MessageString -Replace "^<[0-9]+>",""## Syslog の DateTime と 内容を分割
$MessageStringArray = $MessageString -Split " "
$MessageStringDate = $MessageStringArray[0] + " " + $MessageStringArray[1] + " " + $MessageStringArray[2]
$MessageStringBody = $MessageString -Replace $MessageStringDate,""## 出力フォーマット
# $MessageOut = "$MessageStringDate $RemoteHostIpAddress <$Facility.$Severity> $MessageStringBody"
$MessageOut = "$RemoteHostIpAddress <$Facility.$Severity> $MessageString"## ディスプレイに表示させるだけにするか、ファイルに保存するか。両方でも良い。
Write-Host $MessageOut
#$MessageOut >> c:\temp\syslog.log
}
[Threading.Thread]::Sleep(500)
}
« 宅内LANをいよいよv6するまでの流れ | トップページ
「パソコン・インターネット」カテゴリの記事
- Windows 10 の Powershell で Syslog 受信するスクリプト(2017.08.29)
- The Internet(2006.03.31)
- えせ着うたフロントエンド(2005.03.11)
- 自宅サーバーのHDDリプレース(2004.11.19)
- 味噌煮込み♪(2004.11.13)
「ネットワーク」カテゴリの記事
- Windows 10 の Powershell で Syslog 受信するスクリプト(2017.08.29)
コメント
この記事へのコメントは終了しました。
新しいブログに移転とスクリプトのブラッシュアップしました。
https://blog.kurobee.dev/2019/03/windows-10-powershell-syslog.html#more
投稿: kurobee | 2019/03/09 12:07