# -*-encoding:utf-8 -*-
"""
@Time : 2022/12/30 10:10
@Auth : ruqing
@File :ssh_sonic.py
@IDE :PyCharm
@Motto:ABC(Always Be Coding)
"""
import sys, logging
import os
import time
from paramiko.client import SSHClient, AutoAddPolicy
from paramiko import AuthenticationException
from paramiko.ssh_exception import NoValidConnectionsError class SshClient():
def __init__(self):
self.ssh_client = SSHClient()
if not os.path.exists('log'):
os.mkdir('log') # 生成log文件名
datefmt = '%Y%m%d-%H%M%S'
strftime = time.strftime(datefmt)
self.logname = './log/' + '6865_sonic' + '-' + strftime + '.log' def ssh_login(self, host_ip, username, password):
try:
self.ssh_client.set_missing_host_key_policy(AutoAddPolicy())
self.ssh_client.connect(host_ip, port=2081, username=username, password=password)
except AuthenticationException:
logging.warning('username or password error')
return 1001
except NoValidConnectionsError:
logging.warning('connect time out')
return 1002
except:
print("Unexpected error:", sys.exc_info()[0])
return 1003
return 1000 def execute_some_command(self, command):
stdin, stdout, stderr = self.ssh_client.exec_command(command)
result = (stdout.read().decode())
self.log(result)
return result def ssh_logout(self):
self.ssh_client.close() def log(self, string): if string.strip() == '':
return formatter = logging.Formatter('%(asctime)s %(message)s', datefmt='%Y%m%d-%H%M%S--')
ch = logging.StreamHandler()
ch.setFormatter(formatter)
fh = logging.FileHandler(self.logname)
fh.setFormatter(formatter) formatter2 = logging.Formatter('%(message)s')
ch2 = logging.StreamHandler()
ch2.setFormatter(formatter2)
fh2 = logging.FileHandler(self.logname)
fh2.setFormatter(formatter2) ch3 = logging.StreamHandler()
ch3.setFormatter(formatter)
ch3.terminator = ''
fh3 = logging.FileHandler(self.logname)
fh3.setFormatter(formatter)
fh3.terminator = '' logger = logging.getLogger('mylogger1')
logger.setLevel(logging.INFO)
logger.addHandler(ch)
logger.addHandler(fh) logger2 = logging.getLogger('mylogger2')
logger2.setLevel(logging.INFO)
logger2.addHandler(ch2)
logger2.addHandler(fh2) logger3 = logging.getLogger('mylogger3')
logger3.setLevel(logging.INFO)
logger3.addHandler(ch3)
logger3.addHandler(fh3) string = string.split('\n')
logger2.info(string[0].strip('\r').strip('\n'))
if len(string) >= 2:
for i in range(1, len(string) - 1):
logger.info(string[i].strip('\r').strip('\n'))
logger3.info(string[-1].strip('\r').strip('\n')) logger.removeHandler(ch)
logger.removeHandler(fh)
logger2.removeHandler(ch2)
logger2.removeHandler(fh2)
logger3.removeHandler(ch3)
logger3.removeHandler(fh3) if __name__ == "__main__":
ssh = SshClient()
for i in range(10000):
ssh.log('*************************{}****************************'.format(i + 1))
if ssh.ssh_login(host_ip="192.168.107.62", username="adminadmin", password="Accton123") == 1000:
ssh.execute_some_command('sudo reboot -y')
ssh.ssh_logout()
time.sleep(100)
if ssh.ssh_login(host_ip="192.168.107.62", username="adminadmin", password="Accton123") == 1000:
ssh.execute_some_command(command='timedatectl')
ssh.execute_some_command(command='sudo docker ps -a')
check = ssh.execute_some_command(command='lspci |grep "Broadcom"')
if 'Gigabit Ethernet PCIe' not in check:
ssh.log('脚本停止执行,请查看日志')
ssh.log('!!!!!!!!!!!!!!!!!!!!!!!!!!')
break
ssh.ssh_logout()

Python ssh远程登录设备执行命令的更多相关文章

  1. [转]python3之paramiko模块(基于ssh连接进行远程登录服务器执行命令和上传下载文件的功能)

    转自:https://www.cnblogs.com/zhangxinqi/p/8372774.html 阅读目录 1.paramiko模块介绍 2.paramiko的使用方法 回到顶部 1.para ...

  2. ssh批量登录并执行命令(python实现)

    局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件 ...

  3. Python实现ssh批量登录并执行命令

    局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件 ...

  4. Python 实现远程服务器批量执行命令

    paramiko 远程控制介绍 Python paramiko是一个相当好用的远程登录模块,采用ssh协议,可以实现linux服务器的ssh远程登录.首先来看一个简单的例子 import parami ...

  5. python批量操作Linux服务器脚本,ssh密码登录(执行命令、上传、下载)(一)

     -*-          paramiko.util.log_to_file(         ssh = paramiko.SSHClient()          ssh.set_missing ...

  6. 使用paramiko远程登录并执行命令脚本

    #!/usr/bin/env python #coding=utf-8 import paramiko, getpass,sys,traceback class ssh_utils(): def lo ...

  7. python实现ssh远程登录

    python实现ssh远程登录 # 测试过程中,比较常用的操作就是将DUT(待测物)接入网络中,然后远程操控对DUT, # 使用SSH远程登陆到主机,然后执行相应的command即可 # python ...

  8. Linux命令之远程登录与执行远程主机命令

    实现远程登录的命令 ssh.telnet.rlogin (1)ssh命令 ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器.ssh命令用于远程登录上Li ...

  9. SSH远程登录、.sh文件后缀运行、l l命令结果说明、VIM模式切换

    目录 SSH远程登录..sh文件后缀运行.l l命令结果说明.VIM模式切换 SSH远程安全登录 .sh文件后缀运行 l l命令结果说明 VIM模式切换 SSH远程登录..sh文件后缀运行.l l命令 ...

  10. python paramiko实现ssh上传下载执行命令

    paramiko ssh上传下载执行命令 序言 最近项目经常需要动态在跳板机上登录服务器进行部署环境,且服务器比较多,每次完成所有服务器到环境部署执行耗费大量时间.为了解决这个问题,根据所学的执行实现 ...

随机推荐

  1. Oracle 存储过程5:PL/SQL异常处理

    PL/SQL异常处理是PL/SQL块中对执行部分出现异常进行处理的部分.PL/SQL采用的是统一异常处理机制,当异常发生时,程序会自动跳转到异常处理部分,交给异常处理程序进行异常匹配,再调用对应的处理 ...

  2. DELL品牌电脑开机显示supportASsiSt丨pre-Boot SyStem Proforman?

    这个问题,我百度了N个网站,得到的结果都是针对老版本BIOS的 https://wen.baidu.com/question/1647310335599401700.html https://zhua ...

  3. 华三防火墙主备ACL

    dis cur | in policy 查看 policy-based-route 有线网络 permit node 5 policy-based-route 有线网络 permit node 10 ...

  4. SQLSERVER 根据一个库的视图在另一个库中生成一张表

    select * into VPsiOuntStockBill from [KshDbPro].dbo.VPsiOuntStockBill

  5. 信息安全day1

    课程目标:中小型网络建立.操作和故障排除,连接到WAN和实施网络安全 路由器三层协议功能 多层交换机具备三层协议的功能 终端服务器:特殊的路由器 网云:1.未知网络区域 2.不受自己管理的网络区域 A ...

  6. 前端之JavaScript(Js)基础

    JavaScript,简称Js HTML三把利剑之一,浏览器可解析Js,看着和Java像,实则和Java并无关系,和Python.Go.C++等都是一门独立的语言. 一种轻量级的编程语言. 可插入 H ...

  7. vue引入swiper的报错以及swiper在vue中的交互事件处理

    安装遇到找不到 css的问题,百度查了一些帖子也不行,可能是swiper 升级6.0后的一些变化导致 安装成功的帖子:转载于:https://www.jianshu.com/p/0150d2ee109 ...

  8. 2022-3-11内部群每日三题-清辉PMP

    1.供应商通知项目经理可能延迟交付一个模块.项目经理应该怎么做? A.立即通知相关方. B.通过增加额外的天数来修改项目管理计划,并记录它们对项目时间的影响. C.审查风险管理计划以评估风险,然后通知 ...

  9. 【北邮人论坛帖子备份】【FAQ】给今年国企求职学弟学妹的一点建议

    目录 主要内容 补充--[心得][校招]面向国企秋招的一些体会 补充--[心得]回馈论坛,某toca的小弟金融类央企秋招过程中的一点点 主要内容 时间:Fri Feb 19 23:00:33 2021 ...

  10. linux(centos7)下部署jenkins

    1.安装jdk yum install -y java 确保已经安装了jdk,查看是否安装jdk命令参考地址: 2.安装jenkins 2.0添加Jenkins库到yum库,Jenkins将从这里下载 ...