我想分析rsyslog日志。为此,我将所有日志发送给socat,然后将它们发送到Unix域套接字。该套接字是通过perl脚本创建的,该脚本正在该套接字上侦听以解析日志。无法使用socat连接到套接字
我的bash脚本到rsyslog现在正在发送的所有日志
if [ ! `pidof -x log_parser.pl` ]
then
./log_parser.pl & 1>&1
fi
if [ -S /tmp/sock ]
then
/usr/bin/socat -t0 -T0 - UNIX-CONNECT:/tmp/sock 2>> /var/log/socat.log
fi
/tmp/sock
使用perl脚本log_parser.pl
这是
use IO::Socket::UNIX;
sub socket_create {
$socket_path = '/tmp/sock';
unlink($socket_path);
$listner = IO::Socket::UNIX->new(
Type => SOCK_STREAM,
Local => $socket_path,
Listen => SOMAXCONN,
Blocking => 0,
)
or die("Can't create server socket: $!\n");
$socket = $listner->accept()
or die("Can't accept connection: $!\n");
}
socket_create();
while(1) {
chomp($line=<$socket>);
print "$line\n";
}
有这个错误我是从socat是
越来越创建2015/02/24 11:58:01 socat[4608] E connect(3, AF=1 "/tmp/sock", 11): Connection refused
我不是插座的冠军所以ia米不能理解这是什么。请帮忙。提前致谢。
主要问题是,当我杀了我的perl脚本,然后bash脚本是想要再次调用它并启动它。 究竟发生了什么是sript开始,但socat不是开始,而是它给这个错误,永远不会开始。
你正在定义一个子程序,但是你在哪里调用它? – reinierpost 2015-02-24 09:01:21