【发布时间】:2020-10-08 11:13:59
【问题描述】:
首先,我从 SSH 命令的输出中获得了这个字符串(还有很多节点,包含所有卷和日期:
vserver volume last-success-op-end
----------------- ------------------------------------------------ ------------------------
xxx_xxx_xxx_xxxxx trident_pvc_387e46bc_7fad_4424_95d4_ab15a3e156a8 Mon Jun 10 16:52:18 2020
xxx_xxx_xxx_xxxxx trident_pvc_42816b6e_cd61_4929_a7c2_41de3f593c23 Mon Jun 15 16:52:35 2020
xxx_xxx_xxx_xxxxx trident_pvc_5932a33a_ca9f_4131_8d2b_e465f195c633 Mon Jun 15 16:52:29 2020
xxx_xxx_xxx_xxxxx trident_pvc_769d0605_1964_4dfe_9792_1d84e331519f Mon Jun 15 18:25:30 2020
然后,我想获取所有那些最后一次成功操作结束时间超过 7 天的服务器,并收到这样的输出:
xxx_xxx_xxx_xxxxx.trident_pvc_387e46bc_7fad_4424_95d4_ab15a3e156a8= 7 days;
我试过这样做:
import subprocess
import argparse
import sys
import re
import datetime
from subprocess import check_output
command = #ssh command that returns me that string
output = check_output(command, shell=True)
#Here I take all the dates
dates_1 = str(re.findall('(Mon.*|Sun.*|Tue.*|Wed.*|Thu.*|Fri.*|Sat.*|Sun.*)', output)).replace("\\r", "").replace(" '", "'").replace("'", "").replace("[", "").replace("]", "")
dateslist = dates_1.split(",")
dates_list = [datetime.datetime.strptime(date, "%a %b %d %H:%M:%S %Y").date() for date in dateslist]
now = datetime.datetime.now().date()
deltas = [now-d for d in dates_list]
delta_days = [td.days for td in deltas]
results = map(int, delta_days)
print (results)
这样,我会收到这样的输出:
[3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 3, 5, 5, 4, 4, 4, 4, 4, 4, 0, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 17, 17, 0, 0, 0, 0, 0, 10, 8, 3, 3, 4, 4, 4, 4, 4, 3, 7, 56, 0, 2, 28, 17, 1, 4, 2, 0, 2, 2, 2, 37, 2, 2, 2, 6, 2, 2, 2, 3, 2, 0, 2, 0, 2, 7, 0, 0, 1032, 0, 0, 26, 4, 3, 4, 4, 4, 0, 6, 4, 645, 241, 141, 141, 322, 303, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
但我没有找到有关如何将这些值与他的 vserver + 卷关联并打印它的信息...
有没有办法做到这一点?
非常感谢您的帮助。
【问题讨论】:
-
您是否考虑过将输出字符串
output解析为pandas数据帧?在我看来,这可能是一个实用的选择......你能添加几行,output的样子吗? -
您好@MrFuppes,我的问题开头有一个输出示例
-
好的,我会试着举一个例子。每行是否由换行符分隔?
-
嘿@MrFuppes 是的,每一行都用换行符分隔
标签: python regex string datetime parsing