동일한 호스트 이름을 가진 두 파일을 비교할 방법이 필요합니다. 호스트 이름을 구문 분석하여 목록에 저장하는 함수를 작성했습니다. 일단 내가 가지고 있으면 파일을 비교할 수 있어야합니다.일단 호스트 이름이있는 파일 비교
각 파일은 다른 디렉토리에 있습니다.
1 단계 : 각 파일에서 "호스트 이름"을 검색하십시오. 2 단계 : 두 개의 디렉토리에서 동일한 "호스트 이름"을 가진 파일에 대해 비교를 실행하십시오.
def hostname_parse(directory):
results = []
try:
for filename in os.listdir(directory):
if filename.endswith(('.cfg', '.startup', '.confg')):
file_name = os.path.join(directory, filename)
with open(file_name, "r") as in_file:
for line in in_file:
match = re.search('hostname\s(\S+)', line)
if match:
results.append(match.group(1))
#print "Match Found"
return results
except IOError as (errno, strerror):
print "I/O error({0}): {1}".format(errno, strerror)
print "Error in hostname_parse function"
샘플 데이터 :
테스트 파일 : 호스트 이름이 19-30이 경우에
19-30#
!
version 12.3
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
hostname 19-30
!
boot-start-marker
boot-end-marker
!
ntp clock-period 17179738
ntp source Loopback0
!
end
19-30#
는 호스트 코드를 검색합니다. 테스트의 편의를 위해 방금 동일한 파일을 사용했지만 동일하거나 동일하지 않도록 수정했습니다.
위와 같이. 호스트 이름을 추출 할 수 있지만 발견 된 호스트 이름을 기반으로 파일을 비교하는 방법을 찾고 있습니다.
사물의 핵심은 파일 비교입니다. 그러나 특정 분야를 볼 수있게되면 내가 성취하고자하는 것이 될 것입니다. 처음에는 파일이 동일하다는 것을 알기 위해 찾고 있습니다. 대/소문자 구분은 동일한 형식의 cisco 생성 파일이므로 중요하지 않습니다. 파일의 내용이 "구성"변경 사항을 찾는 데 더 중요합니다.
비교 대상에 대해 좀 더 구체적으로 설명해야합니다. 파일이 동일한 지 찾고 있습니까? 대소 문자 구분/주문 또는 내용에 대해 관심이 있습니까? 비교해야 할 특정 필드가 있습니까? 이것은 매우 광범위한 질문입니다. – flyingmeatball