import requests
import json
from datetime import datetime
import os
import pandas as pd
import time
# 환경 변수에서 URL, 사용자 이름, 패스워드를 가져옵니다.
url1 = os.getenv('API_URL1', 'https://IP/ins')
url2 = os.getenv('API_URL2', 'https://IP/ins')
user1 = os.getenv('API_USER', 'ID')
password1 = os.getenv('API_PASSWORD', 'PASSWORD')
myheaders = {'Content-Type': 'application/json-rpc'}
# API 호출을 위한 페이로드 설정
payload1 = [
{
"jsonrpc": "2.0",
"method": "cli",
"params": {
"cmd": "show interface",
"version": 1
},
"id": 1
}
]
def collect_data(url):
"""URL로부터 데이터를 수집하고 Pandas DataFrame으로 반환"""
try:
response = requests.post(url, data=json.dumps(payload1), headers=myheaders, auth=(user1, password1), verify=False)
response_json = response.json()
time_now = datetime.now()
print(response_json)
body_data = response_json.get('result', {}).get('body', {}).get('TABLE_interface', {}).get('ROW_interface', None)
print("body_data:", body_data) # 디버깅을 위한 데이터 출력
if body_data:
if isinstance(body_data, list) and all(isinstance(item, dict) for item in body_data):
df = pd.DataFrame(body_data)
if 'interface' in df.columns:
df.set_index('interface', inplace=True) # 'interface' 컬럼을 인덱스로 설정
return df
else:
print(f"{time_now} ERROR: 'interface' 열을 찾을 수 없습니다.")
else:
print(f"{time_now} ERROR: body_data가 딕셔너리 리스트가 아닙니다.")
else:
print(f"{time_now} ERROR: 응답에서 본문 데이터를 찾을 수 없습니다.")
with open('REQ_result.txt', 'a', encoding='utf8') as true:
print(f'{time_now} result: {response_json}', file=true)
except Exception as er:
time_now = datetime.now()
print(f"{time_now} FALSE: {er}")
def save_to_excel(df, file_prefix, sheet_name):
"""Pandas DataFrame을 엑셀 파일에 저장 (파일명에 현재 시간을 포함)"""
current_time = datetime.now().strftime("%Y%m%d_%H%M%S")
file_name = f'{file_prefix}_{current_time}.xlsx'
with pd.ExcelWriter(file_name, engine='openpyxl') as writer:
df.to_excel(writer, sheet_name=sheet_name, index=True) # 인덱스를 포함하여 저장
print(f"Data saved to {file_name}")
# 데이터 수집 및 저장
df1 = collect_data(url1)
df2 = collect_data(url2)
if df1 is not None:
save_to_excel(df1, 'REQ_result1', 'Sheet1')
if df2 is not None:
save_to_excel(df2, 'REQ_result2', 'Sheet1')
show interface 정보를 불러와서 인터페이스 기준으로 컬럼을 정렬시켜 엑셀로 저장하는 코드
해당 API는 443을 사용하며 SSL 인증서 인증을 무시하고 진행되는 코드임
'파이썬 코드' 카테고리의 다른 글
파이썬 자동화 -7- (0) | 2023.05.18 |
---|---|
파이썬 자동화 -6- (0) | 2023.03.20 |
network automation -5- (0) | 2023.03.14 |
Network Automation -4- (0) | 2023.02.24 |
networkautomation -3- (0) | 2023.02.23 |