Netmiko 참고 링크
CLI 연결을 단순화 하기 위한 멀티 벤더 라이브러리
네트워크 자동화에서 주로 수행하는 show 명령어, 설정 파일 변경을 가능하게 함
직접 네트워크 장치를 제어하는 것보다 쉽도록 도움
apt update
apt install python3-pip
pip3 install netmiko
apt install python3-netmiko
pip3 show netmiko
from netmiko import ConnectHandler
from getpass import getpass
net_connect = ConnectHandler(
device_type="cisco_ios",
host="cisco1.lasthop.io",
username="pyclass",
password=getpass(),
)
print(net_connect.find_prompt())
net_connect.disconnect()
from netmiko import ConnectHandler
from getpass import getpass
cisco1 = {
"device_type": "cisco_ios",
"host": "cisco1.lasthop.io",
"username": "pyclass",
"password": getpass(),
}
net_connect = ConnectHandler(**cisco1)
print(net_connect.find_prompt())
net_connect.disconnect()
from netmiko import ConnectHandler
from getpass import getpass
cisco1 = {
"device_type": "cisco_ios",
"host": "cisco1.lasthop.io",
"username": "pyclass",
"password": getpass(),
}
# Will automatically 'disconnect()'
with ConnectHandler(**cisco1) as net_connect:
print(net_connect.find_prompt()

위와 같이 수정하여 사용할 수 있다
from netmiko import ConnectHandler
from getpass import getpass
password = getpass()
cisco1 = {
"device_type": "cisco_ios",
"host": "cisco1.lasthop.io",
"username": "pyclass",
"password": password,
}
cisco2 = {
"device_type": "cisco_ios",
"host": "cisco2.lasthop.io",
"username": "pyclass",
"password": password,
}
nxos1 = {
"device_type": "cisco_nxos",
"host": "nxos1.lasthop.io",
"username": "pyclass",
"password": password,
}
srx1 = {
"device_type": "juniper_junos",
"host": "srx1.lasthop.io",
"username": "pyclass",
"password": password,
}
for device in (cisco1, cisco2, nxos1, srx1):
net_connect = ConnectHandler(**device)
print(net_connect.find_prompt())
net_connect.disconnect()
from netmiko import ConnectHandler
from getpass import getpass
cisco1 = {
"device_type": "cisco_ios",
"host": "cisco1.lasthop.io",
"username": "pyclass",
"password": getpass(),
# Multiple all of the delays by a factor of two
"global_delay_factor": 2,
}
command = "show ip arp"
net_connect = ConnectHandler(**cisco1)
output = net_connect.send_command(command)
net_connect.disconnect()
print(f"\n{output}\n")
#!/usr/bin/env python
from netmiko import ConnectHandler
from getpass import getpass
device = {
"device_type": "cisco_ios",
"host": "cisco1.lasthop.io",
"username": "pyclass",
"password": getpass(),
}
commands = ["logging buffered 100000"]
with ConnectHandler(**device) as net_connect:
output = net_connect.send_config_set(commands)
# use the appropriate function for your Netmiko platform:
# commit for Cisco-XR, Juniper-Junos, Palo Alto; save_config for others
# output += net_connect.commit()
output += net_connect.save_config()
print()
print(output)
print()
$ python config_change.py
Password:
configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
cisco1(config)#logging buffered 100000
cisco1(config)#end
cisco1#write mem
Building configuration...
[OK]
cisco1#

위와같이 수정하여 사용할 수 있다
Trunk 참고 링크
VLAN이 여러개면 물리적으로 연결이 불가능한 상황 발생
스위치의 트렁크 포트를 통해 모든 VLAN들이 이동할 수 있도록 함

장치 구성

패킷트레이서의 경우 해당
int g0/1
switchport mode trunk

GNS3의 경우 해당
int g2/0
switchport trunk encapsulation dot1q
switchport mode trunk

사용하는 프로그램, 스위치에 따라 trunk 설치 시 입력해야하는 명령어 차이가 있다
