시스코 기기의 설정 변경을 Bot에 통지시켰을 때의 메모
10122 단어 guestshell시스코automation파이썬네트워크
소개
지난번 과 같이 EEM과 On-Box Python을 조합해 설정 변경을 API 경유로 Webex Teams Bot에 통지해 보았습니다.
절차는 다음을 참고로 변경 부분을 메모로 남깁니다.
POC: Catalyst 9000 Sandbox integration with Spark.
1) 준비한 환경
AWS Marketplace의 CSR1000V를 사용했습니다.
Cisco Cloud Services Router (CSR) 1000V - AX Pkg. Max Performance
30일은 Free Trial 기간이므로 CSR 소프트웨어 비용이 들지 않습니다.
단, EC2 이용료는 부과됩니다.
버지니아 지역의 EC2(t2.medium)의 경우 0.046달러/시간이었습니다.
EC2 시작 후 보안 그룹에서 SSH를 허용하고 SSH 로그인합니다.
2) Webex Teams Bot 만들기
Cisco Webex for Developers에 로그인하고 Start Building Apps > Create a New App > Create a Bot에서 Bot을 만듭니다.
자세한 절차는 2)와 같습니다.
3) 게스트 쉘 설정
자세한 절차는 3)와 같습니다.
그러나 AWS의 경우 DNS 서버의 구성 변경은 필요하지 않습니다.
4) Python 스크립트 작성 및 Bot 테스트
기본적으로 4) 과 같습니다만, 대상 호스트명과 변경 내용을 Bot에 표시시키는 코드를 추가하고 있습니다.
구체적으로는 get_hostname
메소드로 호스트명을 취득해, diffios 모듈로 Startup Config와 Running Config의 차이를 추출하고 있습니다.
별도 ignore.txt
를 작성해, 무시해도 상관없는 차이를 정의하고 있습니다.
myscript.pyfrom ciscosparkapi import CiscoSparkAPI
from cli import cli
import diffios
def get_hostname():
sh_run_host = cli('show run | include hostname')
host_strip = sh_run_host.strip()
hostname = host_strip.lstrip('hostname ')
return hostname
if __name__=='__main__':
# Get hostname of device
hostname = get_hostname()
# Get diffs of startup-config and running-config
with open('sh_start.log', 'w') as f1:
sh_start = cli('show startup-config')
f1.write(sh_start)
with open('sh_run.log', 'w') as f2:
sh_run = cli('show running-config')
f2.write(sh_run)
baseline = 'sh_start.log'
comparison = 'sh_run.log'
ignore = 'ignore.txt'
diff = diffios.Compare(baseline, comparison, ignore)
print diff.delta()
# Use ArgParse to retrieve command line parameters.
from argparse import ArgumentParser
parser = ArgumentParser("Spark Check In")
# Retrieve the Spark Token and Destination Email
parser.add_argument(
"-t", "--token", help="Spark Authentication Token", required=True
)
# Retrieve the Spark Token and Destination Email
parser.add_argument(
"-e", "--email", help="Email to Send to", required=True
)
args = parser.parse_args()
token = args.token
email = args.email
message = "**Alert:** Config Changed \n**Hostname:** " + hostname + " \n```\n" + diff.delta() + "\n```"
api = CiscoSparkAPI(access_token=token)
api.messages.create(toPersonEmail=email, markdown=message)
ignore.txt^Using
Building configuration
Current configuration
crypto pki certificate
^end$
5) NW 기기측의 EEM 설정
5) 과 같습니다. 액세스 토큰과 이메일 주소는 준비한 주소로 다시 작성합니다.
변경 부분을 Bot으로 표시시키기 위해, 일단 설정 저장 후, 이하의 설정 변경을 실시했습니다.
conf t
ip domain lookup
ip access-list extended Test
permit ip host 10.10.10.1 host 10.10.10.2
Webex Teams에 로그인하여 Bot의 알림을 확인합니다.
대상의 호스트명, 변경 개소가 표시되었습니다!
Reference
이 문제에 관하여(시스코 기기의 설정 변경을 Bot에 통지시켰을 때의 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kitara/items/1dc6fd14c66e7253260c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
AWS Marketplace의 CSR1000V를 사용했습니다.
Cisco Cloud Services Router (CSR) 1000V - AX Pkg. Max Performance
30일은 Free Trial 기간이므로 CSR 소프트웨어 비용이 들지 않습니다.
단, EC2 이용료는 부과됩니다.
버지니아 지역의 EC2(t2.medium)의 경우 0.046달러/시간이었습니다.
EC2 시작 후 보안 그룹에서 SSH를 허용하고 SSH 로그인합니다.
2) Webex Teams Bot 만들기
Cisco Webex for Developers에 로그인하고 Start Building Apps > Create a New App > Create a Bot에서 Bot을 만듭니다.
자세한 절차는 2)와 같습니다.
3) 게스트 쉘 설정
자세한 절차는 3)와 같습니다.
그러나 AWS의 경우 DNS 서버의 구성 변경은 필요하지 않습니다.
4) Python 스크립트 작성 및 Bot 테스트
기본적으로 4) 과 같습니다만, 대상 호스트명과 변경 내용을 Bot에 표시시키는 코드를 추가하고 있습니다.
구체적으로는 get_hostname
메소드로 호스트명을 취득해, diffios 모듈로 Startup Config와 Running Config의 차이를 추출하고 있습니다.
별도 ignore.txt
를 작성해, 무시해도 상관없는 차이를 정의하고 있습니다.
myscript.pyfrom ciscosparkapi import CiscoSparkAPI
from cli import cli
import diffios
def get_hostname():
sh_run_host = cli('show run | include hostname')
host_strip = sh_run_host.strip()
hostname = host_strip.lstrip('hostname ')
return hostname
if __name__=='__main__':
# Get hostname of device
hostname = get_hostname()
# Get diffs of startup-config and running-config
with open('sh_start.log', 'w') as f1:
sh_start = cli('show startup-config')
f1.write(sh_start)
with open('sh_run.log', 'w') as f2:
sh_run = cli('show running-config')
f2.write(sh_run)
baseline = 'sh_start.log'
comparison = 'sh_run.log'
ignore = 'ignore.txt'
diff = diffios.Compare(baseline, comparison, ignore)
print diff.delta()
# Use ArgParse to retrieve command line parameters.
from argparse import ArgumentParser
parser = ArgumentParser("Spark Check In")
# Retrieve the Spark Token and Destination Email
parser.add_argument(
"-t", "--token", help="Spark Authentication Token", required=True
)
# Retrieve the Spark Token and Destination Email
parser.add_argument(
"-e", "--email", help="Email to Send to", required=True
)
args = parser.parse_args()
token = args.token
email = args.email
message = "**Alert:** Config Changed \n**Hostname:** " + hostname + " \n```\n" + diff.delta() + "\n```"
api = CiscoSparkAPI(access_token=token)
api.messages.create(toPersonEmail=email, markdown=message)
ignore.txt^Using
Building configuration
Current configuration
crypto pki certificate
^end$
5) NW 기기측의 EEM 설정
5) 과 같습니다. 액세스 토큰과 이메일 주소는 준비한 주소로 다시 작성합니다.
변경 부분을 Bot으로 표시시키기 위해, 일단 설정 저장 후, 이하의 설정 변경을 실시했습니다.
conf t
ip domain lookup
ip access-list extended Test
permit ip host 10.10.10.1 host 10.10.10.2
Webex Teams에 로그인하여 Bot의 알림을 확인합니다.
대상의 호스트명, 변경 개소가 표시되었습니다!
Reference
이 문제에 관하여(시스코 기기의 설정 변경을 Bot에 통지시켰을 때의 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kitara/items/1dc6fd14c66e7253260c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
자세한 절차는 3)와 같습니다.
그러나 AWS의 경우 DNS 서버의 구성 변경은 필요하지 않습니다.
4) Python 스크립트 작성 및 Bot 테스트
기본적으로 4) 과 같습니다만, 대상 호스트명과 변경 내용을 Bot에 표시시키는 코드를 추가하고 있습니다.
구체적으로는 get_hostname
메소드로 호스트명을 취득해, diffios 모듈로 Startup Config와 Running Config의 차이를 추출하고 있습니다.
별도 ignore.txt
를 작성해, 무시해도 상관없는 차이를 정의하고 있습니다.
myscript.pyfrom ciscosparkapi import CiscoSparkAPI
from cli import cli
import diffios
def get_hostname():
sh_run_host = cli('show run | include hostname')
host_strip = sh_run_host.strip()
hostname = host_strip.lstrip('hostname ')
return hostname
if __name__=='__main__':
# Get hostname of device
hostname = get_hostname()
# Get diffs of startup-config and running-config
with open('sh_start.log', 'w') as f1:
sh_start = cli('show startup-config')
f1.write(sh_start)
with open('sh_run.log', 'w') as f2:
sh_run = cli('show running-config')
f2.write(sh_run)
baseline = 'sh_start.log'
comparison = 'sh_run.log'
ignore = 'ignore.txt'
diff = diffios.Compare(baseline, comparison, ignore)
print diff.delta()
# Use ArgParse to retrieve command line parameters.
from argparse import ArgumentParser
parser = ArgumentParser("Spark Check In")
# Retrieve the Spark Token and Destination Email
parser.add_argument(
"-t", "--token", help="Spark Authentication Token", required=True
)
# Retrieve the Spark Token and Destination Email
parser.add_argument(
"-e", "--email", help="Email to Send to", required=True
)
args = parser.parse_args()
token = args.token
email = args.email
message = "**Alert:** Config Changed \n**Hostname:** " + hostname + " \n```\n" + diff.delta() + "\n```"
api = CiscoSparkAPI(access_token=token)
api.messages.create(toPersonEmail=email, markdown=message)
ignore.txt^Using
Building configuration
Current configuration
crypto pki certificate
^end$
5) NW 기기측의 EEM 설정
5) 과 같습니다. 액세스 토큰과 이메일 주소는 준비한 주소로 다시 작성합니다.
변경 부분을 Bot으로 표시시키기 위해, 일단 설정 저장 후, 이하의 설정 변경을 실시했습니다.
conf t
ip domain lookup
ip access-list extended Test
permit ip host 10.10.10.1 host 10.10.10.2
Webex Teams에 로그인하여 Bot의 알림을 확인합니다.
대상의 호스트명, 변경 개소가 표시되었습니다!
Reference
이 문제에 관하여(시스코 기기의 설정 변경을 Bot에 통지시켰을 때의 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kitara/items/1dc6fd14c66e7253260c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from ciscosparkapi import CiscoSparkAPI
from cli import cli
import diffios
def get_hostname():
sh_run_host = cli('show run | include hostname')
host_strip = sh_run_host.strip()
hostname = host_strip.lstrip('hostname ')
return hostname
if __name__=='__main__':
# Get hostname of device
hostname = get_hostname()
# Get diffs of startup-config and running-config
with open('sh_start.log', 'w') as f1:
sh_start = cli('show startup-config')
f1.write(sh_start)
with open('sh_run.log', 'w') as f2:
sh_run = cli('show running-config')
f2.write(sh_run)
baseline = 'sh_start.log'
comparison = 'sh_run.log'
ignore = 'ignore.txt'
diff = diffios.Compare(baseline, comparison, ignore)
print diff.delta()
# Use ArgParse to retrieve command line parameters.
from argparse import ArgumentParser
parser = ArgumentParser("Spark Check In")
# Retrieve the Spark Token and Destination Email
parser.add_argument(
"-t", "--token", help="Spark Authentication Token", required=True
)
# Retrieve the Spark Token and Destination Email
parser.add_argument(
"-e", "--email", help="Email to Send to", required=True
)
args = parser.parse_args()
token = args.token
email = args.email
message = "**Alert:** Config Changed \n**Hostname:** " + hostname + " \n```\n" + diff.delta() + "\n```"
api = CiscoSparkAPI(access_token=token)
api.messages.create(toPersonEmail=email, markdown=message)
^Using
Building configuration
Current configuration
crypto pki certificate
^end$
5) 과 같습니다. 액세스 토큰과 이메일 주소는 준비한 주소로 다시 작성합니다.
변경 부분을 Bot으로 표시시키기 위해, 일단 설정 저장 후, 이하의 설정 변경을 실시했습니다.
conf t
ip domain lookup
ip access-list extended Test
permit ip host 10.10.10.1 host 10.10.10.2
Webex Teams에 로그인하여 Bot의 알림을 확인합니다.
대상의 호스트명, 변경 개소가 표시되었습니다!
Reference
이 문제에 관하여(시스코 기기의 설정 변경을 Bot에 통지시켰을 때의 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kitara/items/1dc6fd14c66e7253260c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)