linux中使用python写一个脚本,过滤vsftpd.conf进程不属于root用户,并比当前时间早一个小时的进程,并打印出这些进程追加到以当前时间命名的文件中
时间: 2024-09-20 14:08:26 浏览: 33
在Linux中,你可以使用Python编写一个bash脚本结合Python的`psutil`库来监控进程信息,然后筛选出符合条件的进程。以下是一个简单的示例:
```python
import os
import time
from psutil import Process, NoSuchProcess
# 获取当前时间并格式化为文件名
current_time = time.strftime("%Y%m%d%H%M%S", time.localtime())
output_file = "vsftpd_filter_{}.log".format(current_time)
# 检查是否运行在root用户下
if os.geteuid() != 0:
print("当前用户不是root,无法执行此操作")
else:
with open(output_file, 'a') as log_file:
# 过滤条件:进程属于vsftpd服务且不属于root用户,创建时间小于一小时前
for proc in Process.children(parents=True):
try:
if proc.name() == 'vsftpd' and proc.username() != 'root':
if proc.create_time() < (time.time() - 3600): # 一小时的时间差
log_file.write("{}, {} {}\n".format(proc.pid, proc.username(), proc.create_time()))
except NoSuchProcess:
pass
print(f"已将结果追加到文件 {output_file} 中")
```
在这个脚本中,我们首先检查当前用户的权限,如果不是root则退出。接着,遍历所有父进程(包括直接和间接的),如果进程名字是`vsftpd`并且用户名不是`root`,并且创建时间在一小时前,我们将进程ID、用户名和创建时间写入指定的输出文件。
阅读全文