如何通过 Python 脚本侦听和报告服务器 (SSH) 连接?

Posted

技术标签:

【中文标题】如何通过 Python 脚本侦听和报告服务器 (SSH) 连接?【英文标题】:How can I listen for and report server (SSH) connections via a Python script? 【发布时间】:2012-04-13 17:09:33 【问题描述】:

我对 Python 有点陌生,但我是一位经验丰富的程序员。我正在编写一个 Python 2.7 脚本,该脚本应该由 Linux 服务器在启动时启动。目的是在用户连接到服务器时通过各种媒介发送通知。

我的问题与实际聆听有关。如何让模块看到用户何时(通过 SSH 或其他方式)连接到服务器?一些快速的伪代码:

# When a connection is made
    # Send an email
    # Send a text message
    # Send notification to server output
    # Etc...

我想在通知中包含一些详细信息,例如用户名、IP、连接时间、上次连接、可爱的自定义连接消息等等。任何关于如何最好地做这些事情的建议也会受到赞赏,但我相信我可以在其他地方解决这个问题。

提前感谢您的指导!

【问题讨论】:

如果您的目标是通知(python 可选),这样的解决方案可能更快:tiger-computing.co.uk/get_notified_with_every_ssh_login 我可能会通过查看服务器的日志文件来做到这一点。默认情况下,您会在日志中获得大部分信息。 您真的希望 SSH 工作,还是只想通知 TCP 连接到端口 22? @NiklasB。不知道你在问什么。我只需要知道与服务器的连接何时发生,并且我需要能够获取有关连接/用户的详细信息。 @Lief:您对答案的评论也回答了这个问题。谢谢。 【参考方案1】:

如果您的 sshd 使用 syslog,您可以配置 syslog 以将身份验证工具发送到命名管道,然后编写 Python 脚本来读取 FIFO。 Here's 一个使用 bash 的示例。

或者,就像 sblom 所说,您可以在 Python 脚本中跟踪 /var/log/auth.log。无论哪种方式,您都应该得到这样的行:

Mar 29 19:58:13 mybox sshd[13914]: Accepted password for jtg from 192.168.0.20 port 51538 ssh2

【讨论】:

【参考方案2】:

pam_python 将允许您编写一个 PAM 模块,该模块可以通知任何使用 PAM 的服务的身份验证尝试。

【讨论】:

我的服务器使用 OpenSSH,我正在看一些关于 PAM 和 OpenSSH 的 tuts,但不幸的是我完全不熟悉这项技术。 ://

以上是关于如何通过 Python 脚本侦听和报告服务器 (SSH) 连接?的主要内容,如果未能解决你的问题,请参考以下文章

如何将代码发送到 3ds Max 脚本侦听器

我刚刚学会用Jenkins自动执行Python脚本输出测试报告!你呢?

不使用被动侦听器来提高滚动性能(灯塔报告)

如何在 s-s-rs 中部署?

怎样用python脚本生成一个html格式的测试报告

如何在Python中使用套接字建立双向通信?