レポートの目的でいくつかのSSL検出スキャンの結果をテーブルとして出力しようとしていますが、そのデータを必要な方法で解析する際に問題があります。各ループを格納し、ループ完了時にテーブルに出力する
私は、出力は次のようになりたい:
IP Address Common Name Valid To
------------ ---------------------- ----------
10.0.255.250 ex.example.com 2017/02/09
10.0.255.251 localhost 2009/07/04
10.0.255.252 ex.example2.com 2016/05/24
ではなく、それはこのようになります。
IP Address Common Name Valid To
------------ ---------------------- ----------
10.0.255.250 ex.example.com 2017/02/09
IP Address Common Name Valid To
------------ ------------- ----------
10.0.255.251 localhost 2009/07/04
None
IP Address Common Name Valid To
------------ ------------- ----------
10.0.255.252 ex.example2.com 2016/05/2
私はこれを整理するためにwhileループを使用しようとしており、運がなかった。 "while"ループと "for each"ループのほうが少ないようです。
def tabulateText():
loop = True
while loop == True:
with open("testinput.txt", "r") as text_file:
for line in text_file:
if "end" in line:
loop = False
elif "IP Address =" in line:
start = line.find('IP Address = ')
endline = line.find('\n', start)
ip = line[start+13:endline]
cert = SSLmon(ip)
Col1 = ip
FCS2 = cert.find('commonName')
FCE2 = cert.find('/', FCS2)
FCS2b = cert.find('commonName')
FCE2b = cert.find('\n', FCS2b)
Colopt2 = cert[FCS2+11:FCE2]
Colopt2b = cert[FCS2b+11:FCE2b]
Col2 = cert[FCS2+11:FCE2] if len(Colopt2) < len(Colopt2b) else cert[FCS2b+11:FCE2b]
FCS3 = cert.find('Not valid after:')
FCE3 = cert.find('T', FCS3)
Col3 = cert[FCS3+18:FCE3].replace('-', '/')
column = Col1[n], Col2[n], Col3[n]
print(tabulate([column], headers=['IP Address', 'Common Name', 'Valid To']))
else:
pass
print(tabulateText())
print(tabulateText())
print(tabulateText())
それぞれの 'line in text_file'を別々に表にしています。 'while'ループ*内に' for'(each)ループ*があります。外側のループは1回だけ実行されます! 'for'ループ*の外側で' tabulate' *を動かして、 'while'を一掃してください。 – jonrsharpe
また、次の点に注意してください。1.あなたはあなたのタイトルで説明したことをやろうとはしません。 2. 'endline'が冗長であることを見つける - ' \ n'は(必然的に!)行の最後の文字です。 – jonrsharpe
@jonrsharpe Endは入力として使用しているテキストファイルの最後の単語です。私は各ループに3つの列を格納させ、入力文書をループした後、それらの値を適切な列の順序で行に出力します。 – Ryan