Netmiko, Trunk 개념

Watermelon·2025년 5월 27일

네트워크

목록 보기
28/42

Netmiko

Netmiko 참고 링크
CLI 연결을 단순화 하기 위한 멀티 벤더 라이브러리
네트워크 자동화에서 주로 수행하는 show 명령어, 설정 파일 변경을 가능하게 함
직접 네트워크 장치를 제어하는 것보다 쉽도록 도움

Netmiko 설정 명령어

apt update
apt install python3-pip

pip3 install netmiko
apt install python3-netmiko
pip3 show netmiko

Netmiko 예제 실행 파일 - Simple example

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()

Netmiko 예제 실행 파일 - Connect using a dictionary

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()

Netmiko 예제 실행 파일 - Dictionary with a context manager

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()


위와 같이 수정하여 사용할 수 있다

Netmiko 예제 실행 파일 - Connecting to multiple devices

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()

Netmiko 예제 실행 파일 - Using global_delay_factor

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")

Netmiko 예제 실행 파일 - Configuration changes

#!/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

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

Trunk 예제


장치 구성


패킷트레이서의 경우 해당

int g0/1
switchport mode trunk


GNS3의 경우 해당

int g2/0
switchport trunk encapsulation dot1q
switchport mode trunk


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

profile
많은 경험을 해보고자 하는

0개의 댓글