SSH 네트워크 장비를 사용하는 방법 파이썬

0 소개

단순히 현실에서, 다음,하지만 보여 모든 사람의 telnetlib 라이브러리를 사용 "텔넷은 네트워크 장치에 파이썬에"마지막 기사, 이후 환경은 여전히 텔넷을 사용하지 않는 것이 좋습니다.
SSH는 (보안 셸) 프로토콜 포트 번호 22에서 TCP / IP 프로토콜 제품군의 일부입니다, 당신은 원격 관리하는 방법에 텔넷을 대체 할 수 있습니다.
SSH는 데이터를 보장하기 위해 보안 상호 인증, 데이터 암호화 및 다른 방법을 제공합니다,하는 SSH v2 버전을 사용하는 것이 좋습니다

1. 시험 환경과 키 코드를 설명

1.1 간단한 테스트 환경

  1. python3 환경을 사용하여
  2. 사용하여 타사 Netmiko 모듈 (Paramiko 기반 라이브러리를 개정)
  3. 간단한 실험 환경
    여기에 그림 삽입 설명

    1.2 키 코드

    수입 XX : 수입 모듈
    클래스 XX : 클래스 정의
    데프 XX를 : 정의 함수
    를 제외하고-시도 : 예외를 처리하는 발생할 수
    ) (ssh.enable : 가능 입력 모드
    ssh.find_prompt을 () : 현재 프롬프트 반환
    ) (ssh.send_command를 : 보내기 쿼리와 결과가 반환
    대상 장치로 구성 커맨드를 송신 : ssh.send_config_set ()
    ssh.disconnect () 연결을 닫기

: 가져 오기 connectHandler 수입 Netmiko 같은 효과, 하.

2. 전체 코드

'''
欢迎关注微信公众号:'diandijishu'
  此平台是网路工程师个人日常技术、项目案例经验分享,
  为巩固及提升技术能力乃至共享所学所知技术,
  也欢迎各位工程师一起分享、一起成长。
'''

#!/usr/bin/env python
#coding:utf-8

from netmiko import ConnectHandler
from netmiko.ssh_exception import NetMikoTimeoutException
from netmiko.ssh_exception import NetMikoAuthenticationException
from datetime import datetime
import time
import logging
from my_devices import device_list as devices

'定义类'
class SSH_Client():
    '定义login_host函数,用于登陆设备'
    def login_host(self , a_device):
        try:
            self.ssh = ConnectHandler(**a_device)
            self.ssh.enable()
            reply = self.ssh.find_prompt()
            print('>' * 10 + '成功登陆结果如下:' + '>' * 10 + '\n' + reply)
            return True
        except ValueError:
            logging.warning(a_device['host'] + ' Secret 密码错误')
        except NetMikoTimeoutException:
            logging.warning(a_device['host'] + ' 连接不上设备,请检查网络是否正常通信')
        except NetMikoAuthenticationException:
            logging.warning(a_device['host'] + ' 登陆失败,用户名或密码错误')

    '定义do_cmd函数,用于执行命令'
    def do_cmd(self,cmds):
        '读取文件,for语句循环执行命令'
        with open(cmds) as cmd_obj:
            for cmd in cmd_obj:
                reply = self.ssh.send_command(cmd)
                time.sleep(2)
                logging.warning('>' * 10 + cmd.rstrip() + ' 命令执行结果如下:' + '>' * 10 + '\n' + reply)
    '定义logout_host函数,关闭程序'
    def logout_host(self):
        self.ssh.disconnect()

if __name__ == '__main__':
    cmds = 'cmd.txt'  # 存放执行命令文件,相对路径
    ssh_client = SSH_Client()
    start_time = datetime.now()
    for a_device in devices:
        '如果登录结果为True,则执行命令,然后退出'
        if ssh_client.login_host(a_device):
            ssh_client.do_cmd(cmds)
            ssh_client.logout_host()
            time.sleep(2)
    stop_time = datetime.now()
    print('总花费时长:{0}\n'.format(stop_time - start_time))

3. 영업 실적

여기에 그림 삽입 설명

4. 효과 주어진

4.1 원격 연결이되지 않습니다

여기에 그림 삽입 설명

4.2 사용자 이름과 비밀번호 오류

여기에 그림 삽입 설명

언어의 깨진 조각

확실히 우리 모두가 장치가 여러 공급 업체, 네트워크 장비 텔넷 및 SSH 혼합을 포함하는 경우, 그러나, 당신은 요청할 수 있습니다 타사 라이브러리 또는 네트워크 장치에 파이썬 SSH 또는 텔넷와 함께 제공 라이브러리를 사용하는 방법을 알고, 두 개의 기사를 결합, 많은 네트워크 장비 그 코드와 방법을 최적화하는 방법? 실제로, 일련의 문제를 해결하기 위해, 하나 하나, 우리는 카자흐스탄이 아니라 길 주니어 파트너, I 멀티 프로세스, 멀티 스레드 최적화 네트워크 순찰 전체 버전을 사용하는 방법에 당신을 줄 것이다 나중에 글을 잘 알고 천천히 시작하는.
I 코드 쿵푸는 전시 결함이 희망으로, 깊은 같은 아닌, 감사합니다.


당신이 내 기사를 좋아하는 경우에, 나는 대중 번호의 관심을 환영합니다 : 물방울 기술 관련 스캔 코드를 시간에서 공유 할 수있는 시간
비트 기술

추천

출처www.cnblogs.com/singvis/p/11568613.html