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上传下载执行命令 序言 最近项目经常需要动态在跳板机上登录服务器进行部署环境,且服务器比较多,每次完成所有服务器到环境部署执行耗费大量时间.为了解决这个问题,根据所学的执行实现 ...
随机推荐
- 安装git-lfs
git大文件报错: smudge filter lfs failedwarning: 克隆成功,但是检出失败.您可以通过 'git status' 检查哪些已被检出,然后使用命令'git checko ...
- c#怎样删除指定文件名的文件
我有一个文件夹,里面有6个文件,我现在要删除字母B开头的三个文件,只需要剩下A开头的文件即可用C#怎样操作??? foreach (string d in Directory.GetFileSyste ...
- FastReport 单元行自动换行 Table Object AutoSize
FastReport 官方实例138.fr3 有关于单元行自动换行的描述.The table object can grow depends on cells content. Notes:- set ...
- Java设计模式之策略模式(13)
策略模式定义了一系列算法,每个算法封装起来,他们可以相互替换,且算法的变化不会影响到使用算法的客户.可以设计一个抽象类提供辅助. package WHP; public interface ICalc ...
- react backend and frontend download file
import { View as ViewFile} from '@/api/SafetyRule'; const Handler_DownLoadFile = (Id:number,IsEngli ...
- Qt6以上安装速度慢解决-国内镜像加速
1.安装抓包软件Fiddler最新版本 Fiddler30天试用 2.在软件下方输入栏内粘贴以下命令 urlreplace download.qt.io mirrors.tuna.tsinghua.e ...
- Burp Suite入门
Burpsuite Burp Suite是一个Web应用程序集成攻击平台,它包含了一系列burp工具,这些工具之间有大量接口可以互相通信,这样设计的目的是为了促进和提高整个攻击的效率.平台中所有工具共 ...
- mongodb更改账户密码
docker部署方式更改 sudo docker exec -it mongodb mongo admin (登录数据库容器) use admin db.auth('admin','shijiehep ...
- 039_External Data Source(转载)
场景描述:很多时候在实际开发中都会遇到很多数据集成问题,如Salesforce和SAP同步数据.为了让类似问题能方便.快速地解决,Salesforce提供了"外部数据源"这样的工具 ...
- js下载文件防止白屏
思路:用js创建一个iframe,让后指定src为下载目录. var ifup = document.getElementById("xman-activity-export-downLoa ...