0 소개
단순히 현실에서, 다음,하지만 보여 모든 사람의 telnetlib 라이브러리를 사용 "텔넷은 네트워크 장치에 파이썬에"마지막 기사, 이후 환경은 여전히 텔넷을 사용하지 않는 것이 좋습니다.
SSH는 (보안 셸) 프로토콜 포트 번호 22에서 TCP / IP 프로토콜 제품군의 일부입니다, 당신은 원격 관리하는 방법에 텔넷을 대체 할 수 있습니다.
SSH는 데이터를 보장하기 위해 보안 상호 인증, 데이터 암호화 및 다른 방법을 제공합니다,하는 SSH v2 버전을 사용하는 것이 좋습니다
1. 시험 환경과 키 코드를 설명
1.1 간단한 테스트 환경
- python3 환경을 사용하여
- 사용하여 타사 Netmiko 모듈 (Paramiko 기반 라이브러리를 개정)
간단한 실험 환경
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 코드 쿵푸는 전시 결함이 희망으로, 깊은 같은 아닌, 감사합니다.
당신이 내 기사를 좋아하는 경우에, 나는 대중 번호의 관심을 환영합니다 : 물방울 기술 관련 스캔 코드를 시간에서 공유 할 수있는 시간