Python으로 네트워크장비를연결하여 장비 및 회선 상태 등을 자동 점검하는 RPA(Robot Process Automation) Tool을 만들어보자
기반 Library
- Paramiko - Python)에서SSH를사용하여 네트워크 장비 접급
- Netmiko : Paramiko기능을 확장하여 스위치나 라우터 Config 등을 프로그래밍 가능한 라이브러리
Netmiko 설치
- Netmiko 주소: https://github.com/ktbyers/netmiko
- 관리자권한으로 Command 창 실행
- (참고) 패키지 설치전 pip를 최신 버전으로 업그레이드 하는것이 좋다
>python -m pip install --upgrade pip
>python -m pip install --upgrade setuptools
- Netmiko 설치전 요구사항
> python -m pip list # PC애 설치된 라이브러리 확인
. Paramiko 버전 2.4.3 이상
. scp 버전 0.13.2 이상
. pyserial
. textfsm
내 PC에는 scp, pyserial, textfsm이 설치 안되어있어 아래와 같이 설치하였다
>pip install scp
>pip install pyserial
>pip install textfsm
- netmiko 설치
>pip install netmiko
>python -m pip list # 설치된 라이브러리 버전 확인
Package Version
------------------------- ---------
netmiko 3.4.0
paramiko 2.8.0
pyserial 3.5
setuptools 49.2.1
textfsm 1.1.2
InfluxDB 설치 : 통계, 이벤트 및 실시간 분석을위한 오픈 소스 및 확장 가능한 시계열 데이터베이스
>python -m pip install --upgrade influxdb
Package Version
------------------------- ---------
influxdb 5.3.1
Netmiko 지원 장비 종류
- Arista vEOS
- Cisco ASA
- Cisco IOS
- Cisco IOS-XR
- Cisco SG300
- HP Comware7
- HP ProCurve
- Juniper Junos
- Linux
- and other
Telnet 또는 SSH 연결
from netmiko import ConnectHandler import sys # 네트워크 장비의 접속 프로파일 작성, Dictionary 형태로 작성 ios_sw = { 'device_type' : 'cisco_ios', 'ip' : '10.0.0.1', 'username' : 'admin', 'password' : 'cisco', 'secret' : 'cisco', # enable 모드로 진입하기 위함 'verbose' : True, # 함수 수행시 발생정보들을 표준 출력으로 내보내는 방법 # - verbose 0 은 출력않음, 1은 자세히, 2는 함축 정보만 출력 } #ssh 연결 net_connect = ConnectHandler(**ios_sw) # Dict 형태로 작성되었기 때문에 **를 붙인다 |
네트워크 명령어 수행
#명령어 입력 output = net_connect.send_command('show run') print(output) # 새로운 구성 변경시 enable 모드 진입 net_connect.enable() # enable 모드로 진입하기 위한 함수. (필수) # 종료 : net_connect.exit_enable_mode() # Config 모드 net_connect.config_mode() #접속 #종료 : net_connect.exit_config_mode() net_connect.check_config_mode #Config 모드면 True, 아니면 False # netmiko 커맨드 종류 .send_command('커맨드') # 한개의 커맨드 yield .send_config_set('커맨드') # 여러개의 커맨드 전송 .send_config_from_file('파일명') # 파일로 묶은 커맨드 전송 .find_prompt() # 현재 프롬프트 반환 .commit() # commit이 필요한 OS만 사용) # 커맨드 실행 예시 1: interface loopback 0 생성 및 IP 추가 config_commands = ['interface loopback 30','ip address 1.1.1.1 255.255.255.255'] output = net_connect.send_config_set(config_commands) print(output) # 커맨드 실행 예시 2: IP route 생성 및 확인 out_put_2 = net_connect.send_config_set('ip route 0.0.0.0 0.0.0.0 192.168.60.129') print(out_put_2) # show_route = connect.send_command('show ip route') # 위 명령 수행 확인 print(show_route) net_connect.disconnect() # ssh 종료 |
=================================================================
열심히 일한 당신 떠나라 ~~~
'파이썬 RPA' 카테고리의 다른 글
이런 네트워크 테스트 베드가 공짜로 내 PC에.. GNS3 설치 (0) | 2021.11.10 |
---|