首页 > 解决方案 > 无法在python中按日期排序

问题描述

我有一个 bsh 脚本,它有一个 while 循环,它是一个 python 脚本来检查一堆主机上的 SSL 证书到期日期。该脚本完美执行并输出:

domainA--> expiry_date_A domainB--> expiry_date_B

我需要能够按日期排序,以便知道哪个即将到期。

以下是脚本:

**cat CE.sh**

for dm in `cat dm.txt`; do
    python3 check-cert.py $dm
done

**cat dm.txt**
google.com
ibm.com
cisco.com
example.com

cat check-cert.py
import ssl
import OpenSSL
import sys
import time

def get_SSL_Expiry_Date(host, port):
    cert = ssl.get_server_certificate((host, 443))
    x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)
    raw_date = x509.get_notAfter()
    decoded_date = raw_date.decode("utf-8")
    dexpires = time.strptime(decoded_date, "%Y%m%d%H%M%Sz")
    print (domain, "expires --> ", time.strftime('%m/%d/%y', dexpires))
domain = sys.argv[1]
port = 443
get_SSL_Expiry_Date(domain, port)

这是输出:

google.com expires -->  04/23/19
ibm.com expires -->  03/15/20
cisco.com expires -->  12/07/19
example.com expires -->  12/02/20

我需要按日期排序的输出,所以它应该是:

google.com expires -->  04/23/19
cisco.com expires -->  12/07/19
ibm.com expires -->  03/15/20
example.com expires -->  12/02/20

我感谢您的帮助。

谢谢

标签: pythonbash

解决方案


您可以通过创建值的数据框来做到这一点

pd.DataFrame(output)

名称列

output.columns=['Source','Date']

然后排序:

output['Date'] =pd.to_datetime(output.Date)
output.sort_values(by='Date')

推荐阅读