При вызове функции, как передать переменную как аргумент - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть код ниже, который работает, но вместо вызова функции с "www.google.com", я должен быть в состоянии передать как arg:

python certexp.py www.google.com:

import ssl
import OpenSSL
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")
    print (decoded_date)
    dexpires = time.strptime(decoded_date, "%Y%m%d%H%M%Sz")
    print (dexpires.tm_mon,"/",dexpires.tm_mday,"/",dexpires.tm_year)

get_SSL_Expiry_Date("google.com", 443)

Спасибо

1 Ответ

0 голосов
/ 09 ноября 2018

В python модуль sys обрабатывает аргументы командной строки.

Это дает вам массив параметров командной строки, где sys.argv[0] - это имя исполняемого файла, а все последующие элементы - пользовательские параметры.

Это делает ваш код:

import ssl import OpenSSL import time import sys

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")
    print (decoded_date)
    dexpires = time.strptime(decoded_date, "%Y%m%d%H%M%Sz")
    print (dexpires.tm_mon,"/",dexpires.tm_mday,"/",dexpires.tm_year)

if (len(sys.argv) == 1):
    sys.stderr.write("%s: Give hostname as an argument, optionally a port too" % (sys.argv[0]))
    sys.exit(1)

hostname = sys.argv[1]
port = 443
if (len(sys.argv) == 3):
    port = int(sys.argv[2])

get_SSL_Expiry_Date(hostname, port)

Очевидно, вы могли бы сделать это и для порта.Есть и другие модули синтаксического анализа командной строки, так что вы можете сказать --port= и т. Д.

...