[Perl] ポートを指定してsyslogの送信テストする

fluentdでsyslogを受信する設定の関連で、ちゃんとsyslogを受信できるのか調べる必要がありました。
送信する方も正しいか切り分けできていなかったので、syslogの送信テストをしたいと思った所、ここのサイトに素敵なサンプルがありました。
ポートを指定してsyslogを送りたかったので、少し改造してポート指定できるように変更しました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
コードの記載
#!/usr/bin/perl
use strict;
use warnings;
use Sys::Syslog qw(:DEFAULT setlogsock);
 
if (@ARGV  != 4){
  print "usage syslogtest.pl [target_host[:port]] [facility] [priority] [msg]\n";
  print "priority is error|warning|debug|info\n";
  exit(1);
}
 
my $ident    = "send-syslog-test";
my $logopt   = "pid";
my $port     = 514;
 
my ($sv, $facility, $priority, $msg ) = @ARGV;
 
# ポート指定されていればポートを取得する
if ($sv =~ /([^:]+):([0-9]+)/) {
    $sv   = $1;
    $port = $2;
}
 
setlogsock({type => "udp", port => $port});
$Sys::Syslog::host = $sv;
 
openlog($ident, $logopt, $facility);
syslog($priority, $msg);
closelog();

参考URL

0 件のコメント :

コメントを投稿