2011-04-21 70 views
0

我想編寫一個程序來監視syslog並在PPP認證失敗時執行操作。從C程序監視Linux系統日誌上的新條目

我認爲「tail -f/var/log/syslog」可以幫助,但我不知道如何使用它......可能使用管道?

我也發現了類似寫在bash的東西,但我不知道如何實現它在C.

這是bash的方法:

首先使用mkfifo創建命名管道:

$ mkfifo -p /home/mezgani/syslog.pipe 

製作syslog.conf內容爲指向此文件:

*.info |/home/mezgani/syslog.pipe 

重啓SYS日誌:

$ sudo pkill -HUP syslogd 

創建閱讀管

$ cat > foo 
#!/bin/bash 
cat /home/mezgani/syslog.pipe | while read input 
do 
    # some stuff 
    echo ${input} 
    # …. 
done 
+0

聽起來很哈克讀管道。沒有可以使用的PPP插件機制嗎? – trojanfoe 2011-04-21 07:09:27

+0

我做了一些關於Linux PPP服務器的研究,但找不到任何東西。 – capsula 2011-04-21 07:16:46

回答

1

最後我可以找到解決方案!

該解決方案使用命名管道!

首先,我需要創建一個命名管道: mkfifo /管

然後,我喂管與日誌信息: 尾-f在/ var/log/syslog的> /管

然後,我從C程序中使用OPEN

int pipefd; 
pipefd = open("/tmp/myFIFO", O_WRONLY); 
0

嘗試使用inotify的功能處理腳本。使用它你可以監視一個文件或目錄是否已經改變。

+0

謝謝!這在管道不起作用的情況下可能有用 – capsula 2011-04-21 07:12:11