我想分析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