我有 8 台服务器要监控。所有服务器都安装了龙卷风 python 服务器。其中一个服务器是一个监视器,它会轮询其他服务器并在出现问题时通过 SMS 提醒我。
其中一个警报是当用户登录到其中一台服务器时。
如何使用 Python 检测谁在我的 Ubuntu 服务器上登录?我需要将登录的用户返回到主监视器。我希望这能让事情清楚..
我在网上找到的最好的东西是psutil
. 请参阅psutil 文档
首先安装 psutil :
pip install psutil
之后一切都很简单,例如从终端运行 python 控制台:
import psutil
psutil.users()
输出:
[user(name='root', terminal='pts/0', host='your-local-host-from-isp.net',
started=1358152704.0)]
使用该subprocess
模块,然后运行命令who
。
In [5]: import subprocess
In [6]: subprocess.check_output("who")
Out[6]: 'monty pts/0 2013-01-14 16:21 (:0.0)\n'
who | wc -l
您可以使用:获取当前登录次数
In [42]: !who
monty pts/2 2013-01-14 19:09 (:0.0)
monty pts/0 2013-01-14 19:07 (:0.0)
In [43]: p=Popen(["who"],stdout=PIPE)
In [44]: Popen(["wc","-l"],stdin=p.stdout).communicate()[0]
2
用户名称:
In [54]: users=check_output("who")
In [55]: set([x.split()[0] for x in users.splitlines()])
Out[55]: set(['monty'])
from subprocess import Popen, PIPE, STDOUT
who = Popen(['who'],stdin=PIPE, stdout=PIPE, stderr=STDOUT)
print who.stdout.read()
# Output
>>> sudo_O :0 2013-01-14 11:48 (:0)
>>> sudo_O pts/0 2013-01-14 11:48 (:0)
>>> sudo_O pts/1 2013-01-14 12:41 (:0)
>>> sudo_O pts/2 2013-01-14 12:42 (:0)
如果您不想安装 3-rd 方软件。您可以随时运行 unix who实用程序
import os
os.popen('who').read()
In [1]: import subprocess
In [2]: print subprocess.check_output("who").split()[0]
Out[3]: 'rikatee'