Python ssh远程登录设备执行命令
# -*-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远程登录设备执行命令的更多相关文章
- [转]python3之paramiko模块(基于ssh连接进行远程登录服务器执行命令和上传下载文件的功能)
转自:https://www.cnblogs.com/zhangxinqi/p/8372774.html 阅读目录 1.paramiko模块介绍 2.paramiko的使用方法 回到顶部 1.para ...
- ssh批量登录并执行命令(python实现)
局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件 ...
- Python实现ssh批量登录并执行命令
局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件 ...
- Python 实现远程服务器批量执行命令
paramiko 远程控制介绍 Python paramiko是一个相当好用的远程登录模块,采用ssh协议,可以实现linux服务器的ssh远程登录.首先来看一个简单的例子 import parami ...
- python批量操作Linux服务器脚本,ssh密码登录(执行命令、上传、下载)(一)
-*- paramiko.util.log_to_file( ssh = paramiko.SSHClient() ssh.set_missing ...
- 使用paramiko远程登录并执行命令脚本
#!/usr/bin/env python #coding=utf-8 import paramiko, getpass,sys,traceback class ssh_utils(): def lo ...
- python实现ssh远程登录
python实现ssh远程登录 # 测试过程中,比较常用的操作就是将DUT(待测物)接入网络中,然后远程操控对DUT, # 使用SSH远程登陆到主机,然后执行相应的command即可 # python ...
- Linux命令之远程登录与执行远程主机命令
实现远程登录的命令 ssh.telnet.rlogin (1)ssh命令 ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器.ssh命令用于远程登录上Li ...
- SSH远程登录、.sh文件后缀运行、l l命令结果说明、VIM模式切换
目录 SSH远程登录..sh文件后缀运行.l l命令结果说明.VIM模式切换 SSH远程安全登录 .sh文件后缀运行 l l命令结果说明 VIM模式切换 SSH远程登录..sh文件后缀运行.l l命令 ...
- python paramiko实现ssh上传下载执行命令
paramiko ssh上传下载执行命令 序言 最近项目经常需要动态在跳板机上登录服务器进行部署环境,且服务器比较多,每次完成所有服务器到环境部署执行耗费大量时间.为了解决这个问题,根据所学的执行实现 ...
随机推荐
- 栈和寄存器虚拟机比较(以python和lua为例)
指令长度 python python的指令定长,长度为16bit,其中8bit操作码,8bit操作数. ///@file: Python-3.6.0\Include\code.h typedef ui ...
- python 中的 re.compile 函数
python 中的 re.compile 函数 正则表达式功能十分强大. "有些人面临一个问题时会想:'我知道,可以用正则表达式来解决这个问题.'于是现在他们就有两个问题了"- ...
- java的知识点
java 知识点 1.包装类自带有parse方法 Integer i = 315; int i1 = Integer.parseInt("315"); System.out.pri ...
- Android 隐藏和显示软键盘
1 public static void hideKeyboard(View view){ 2 InputMethodManager imm = (InputMethodManager) view.g ...
- MacOS如何使用emoji表情?
Emoji作为一种表情符号,被现代计算机系统都支持的Unicode编码所采纳,普遍应用于各种社交网络中.而苹果作为第一个引用该这种表情符号的公司,其这种表情符号无疑是同类中最佳的.因为是被Unicod ...
- DDR内存256M16、512M8含义
256M16,后面的16是代表数据位数,也可以认为是16个bit.一般一个Byte是8个bit.例如256M4的容量为256*16 bit = 4096Mb = 512MB所以 256M16和 512 ...
- PostScript语言教程(六、图形变换)
6.1.坐标系变换 POSTSCRIPT图形操作是在一个坐标系中,这个坐标系被称为用户坐标系或用户空间,该坐标系独立于任何物理设备.POSTSCRIPT在用户空间中进行绘制,并将结果传输到特定的打印机 ...
- dedecms安装使用
1.运行 http://域名/install/index.php(比如你的域名是:http://www.dede58.com/,就输入http://www.dede58.com/install/ind ...
- 常用的DOS指令及部分快捷键
常用的DOS指令及部分快捷键 1.dos打开方式 win + R打开运行,输入cmd,打开dos 2.常用的Dos指令 a.切换盘号 方法 直接输入对应盘加" :" D: ...
- es6中箭头函数和this指向
箭头函数相当于匿名函数,简化了函数定义. 箭头函数有两种写法,当函数体是单条语句的时候可以省略{}和return. 另一种是包含多条语句,不可以省略{}和return. 特点 箭头函数最大的特点就是没 ...