关于Solaris的syslog机制( 二 )



下面作为一个示例,看看如何使用syslog机制来对telnet登录进行记录 。
Telnet和ftp等许多网络服务是通过inetd来提供的 。因此先检查一下inetd使用了什么类型和级别的syslog调用:

# man inetd
……
-t Instructs inetd to trace the incoming
connections for all of its TCP services. It does this by
logging the clIEnt"s IP address and TCP port number,
along with the name of the service, using the syslog(3)
facility. UDP services can not be traced. When tracing is
enabled, inetd uses the syslog facility code ``daemon""
and ``notice"" priority level.
……

就是说,启动带-t选项的inetd,它才会调用syslog来记录TCP服务的细节,类型是daemon,级别是notice 。于是先修改inetd的启动脚本/etc/init.d/inetsvc,找到inetd那行,改为:
/usr/sbin/inetd -s -t &

前面看到,daemon.notice已经包括在syslog.conf中,action是/var/adm/messages 。如果action不想变,那么就不用做修改了 。

重启一下syslogd:
# /etc/init.d/syslog stop
# /etc/init.d/syslog start

重启一下inetd:
# /etc/init.d/inetsvc stop
# /etc/init.d/inetsvc start

试验一下结果 。开一个窗口监视有没有新的message来:
# tail -f /var/adm/messages

从另一台机器上telnet或ftp上来 。上面的监视窗口中应该有输出(^C 终止监视):
……
Jun 18 12:08:42 host1 inetd[755]: [ID 317013 daemon.notice] ftp[759] from 192.168.1.88 1082
Jun 18 12:09:13 host1 inetd[755]: [ID 317013 daemon.notice] telnet[760] from 192.168.1.88 1083
Jun 18 12:11:22 host1 inetd[755]: [ID 317013 daemon.notice] ftp[771] from 192.168.1.88 1084

对软件开发者来说,可以参考关于syslog()的有关资料,将你的软件中的信息进行适当的syslog()调用,以输出到所希望的地方 。

推荐阅读