3 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
嘗試將shallow設(shè)置為false(默認(rèn)為True),即
if filecmp.cmp('revision_1.txt', 'revision_2.txt', shallow=False):
從文檔中:如果為 true,則具有相同 os.stat() 簽名的文件被視為相等。否則,將比較文件的內(nèi)容。
https://docs.python.org/3/library/filecmp.html#filecmp.cmp

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
如何忽略 message-id (我只需要修訂值)?
查看腳本輸出:不等于修訂版:fpc1-1603878922-228
FFFFFFF 修訂版:fpc1-1603878922-228
FFFFFFFF
腳本:
import smtplib
import email.message
from email.mime.text import MIMEText
from ncclient import manager
from ncclient.xml_ import *
import sys
import time
import filecmp
# Connecting to juniper cc-vc-leg
conn = manager.connect(
? ? ? ? host='10.1.1.1',
? ? ? ? port='830',
? ? ? ? username='test',
? ? ? ? password='test',
? ? ? ? timeout=10,
? ? ? ? device_params={'name':'junos'},
? ? ? ? hostkey_verify=False)
# Take juniper commands
resault = conn.command('show version | match Hostname', format='text')
revision = conn.command('show system commit revision', format='text')
compare_config = conn.compare_configuration(rollback=1)
# Open & read file vc-lg_rev.text
f = open('vc-lg_rev.text', 'r')
d = f.read()
# Check if revision output is equal to file "vc-lg_rev.text"
# If equal exit the script
if? (revision == d):
? ? ? ?print('equal')
? ? ? ?exit()
? ? ? ?print('I hop script stopped')
else:
? ? ? ?print('Not equal')
? ? ? ?print(revision)
? ? ? ?print('FFFFFFF')
? ? ? ?print(d)
? ? ? ?print('FFFFFFF')
# To save last revision number to "vc-lg_rev.text"
with open('vc-lg_rev.text', 'w', buffering=1) as rev1:
? ? ? ? rev1.write(str(revision))
? ? ? ? rev1.flush()
rev1.close()
# This is how i copy "compare_config" output to file "vc-lg_compare.text"
original_stdout = sys.stdout
with open('vc-lg_compare.text', 'w') as a:
? ? ? ? sys.stdout = a
? ? ? ? print(compare_config)
sys.stdout = original_stdout
def send_email(compare):
? ? server = smtplib.SMTP('techunix.technion.ac.il', 25)
? ? email_reciver = 'rafish@technion.ac.il', 'rafi1shemesh@gmail.com'
? ? message = f"'Subject': mail_subject \n\n {compare}"
? ? ID = 'Juniper_Compare'
? ? server.sendmail(ID, email_reciver, message)
with open('vc-lg_compare.text', 'r') as compare:? ?# "as" means file object called compare
? ? ? ? text = str(compare.read())? ? ? ? ? ? ? ? ?# I want to recive the output as string to look specific word in the file
? ? ? ? if (text.find('+') > -1) or (text.find('- ') > -1):
? ? ? ? ? ? ? ? send_email(text)

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
您對文件的使用不尋常:
import filecmp
revision = "08/15"
with open('revision_1.txt', 'w') as rev1:
rev1.write(revision)
with open('revision_2.txt', 'w') as rev2:
rev2.write(revision)
with open('revision_3.txt', 'w') as rev3:
rev3.write(revision + "-42")
# should compare equal
if filecmp.cmp('revision_1.txt', 'revision_2.txt'):
print("Identical")
else:
print("No, the files are NOT the same")
# should NOT compare equal
if filecmp.cmp('revision_1.txt', 'revision_3.txt'):
print("Identical")
else:
print("No, the files are NOT the same")
印刷
Identical
No, the files are NOT the same
添加回答
舉報(bào)