当前位置:  开发笔记 > 编程语言 > 正文

适用于Linux的SSH"登录监视器"

如何解决《适用于Linux的SSH"登录监视器"》经验,为你挑选了3个好方法。

我正在尝试编写一个脚本,当有人通过ssh登录机器时通知用户.

我目前的想法是在间隔中使用grep解析"w"的输出.

但这既不优雅也不高效.有没有人更好地了解如何实施这样的程序?

真的很感激任何帮助!



1> mjy..:

Paul Tomblin有正确的建议.

在sshd_config中设置日志记录以指向可以单独记录的syslog工具:

=>请参阅man 3 syslog以获取更多设施.选择一个像例如

# Logging
SyslogFacility local5
LogLevel INFO

然后像这样设置你的syslog.conf:

local5.info    |/var/run/mysshwatcher.pipe

将要写入的脚本添加到/ etc/inittab,以便它继续运行:

sw0:2345:respawn:/usr/local/bin/mysshwatcher.sh

然后编写你的脚本:

#!/bin/sh

P=/var/run/mysshwatcher.pipe
test -p $P || mkfifo $P

while read x <$P; do
  # ... whatever, e.g.:
  echo "ssh info: $x" | wall
done;

最后,重新启动syslogd并重新加载inittab(init q),它应该可以工作.如果使用这些服务的其他variantes,则需要相应地配置(例如newsyslogd => /etc/newsyslog.conf; Ubuntu:/etc/event.d不是inittab)

这是非常简陋和缺乏的,但应该足以让你开始......

更多信息:man sshd_config获取更多日志记录选项/详细程度.



2> kdgregory..:

在Ubuntu上(我猜所有其他Debian发行版,如果不是所有的Linuces),文件/var/log/auth.log记录成功(和不成功)登录尝试:

sshd[XXX]: pam_unix(sshd:session): session opened for user XXX

您可以使用此命令设置一个非常简单的监视器(请注意,您必须是root才能看到auth日志):

sudo tail -F /var/log/auth.log | grep sshd



3> Daniel Lopez..:

如果你不在乎他们如何登录(telnet/ssh),'last'Unix命令行实用程序会显示机器中的最后几次登录.远程用户将显示IP地址

[root @ ex02 www] #last foo pts/1 81.31.xy Sun 1月18日07:25仍登录
foo pts/0 81.31.xy Sun 1月18日01:51仍然登录
foo pts/0 81.31.xy 1月17日星期六03:51 - 07:52(04:00)
bar pts/5 199.146.xy Fri Jan 16 08:57 - 13:29(04:32

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有