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上传下载执行命令 序言 最近项目经常需要动态在跳板机上登录服务器进行部署环境,且服务器比较多,每次完成所有服务器到环境部署执行耗费大量时间.为了解决这个问题,根据所学的执行实现 ...
随机推荐
- 为什么MeshLambertMaterial和MeshPongMaterial不可见
在编程时发现对于同样的球体,MeshBasicMaterial可见,但是MeshLambertMateril和MeshPongMaterial不可见. 原因是这两种材质需要光照才能显示. 如果加了光照 ...
- HDLbits——Rotate100
verilog代码: // Build a 100-bit left/right rotator, with synchronous load and left/right enable. //A r ...
- Uncaught ReferenceError: Vue is not defined(之二)
背景最近开发的一个项目,前段时间开发过程中还好好的,最近一次打包部署后,浏览器访问一直是打不开: 打开控制台,看到的一个报错如下: 作为一个前端不太熟练的后端研发,我在网上根据关键字:Vue is n ...
- uniapp 离开界面清除计时器
onLoad() { // APP启动引导图逻辑判断显示 if (uni.getStorageSync("startImgSt ...
- 利用position: absolute最简便实现水平居中的css样式
html <div class="horizontal-center"></div> css .horizontal-center { left: 50%; ...
- crontab执行不生效
背景:不知道什么原因脚本手动执行:正常:crontab执行不生效: 1.将命令所属路径加入到 /etc/crontab中, 2.在shell脚本中加入 source /etc/profile
- SSH的密钥登录配置
1.ssh的登录方法. 两种方法: (1)linux系统connect to linux ssh -l root 192.168.2.191 #直接登录. 语法:$ssh -p 22 user@hos ...
- postman导出Collection文件
postman接口调用工具可以将曾经使用过的请求配置导出为文件保存,方法如下: 1.编写一个接口测试用例 2.按组分类 3.导出 参考来源: https://blog.csdn.net/IBLiplu ...
- Samsung Wlan AP 默认口令
网络资产搜索: FoFa 进入页面 输入该产品账户密码 在github上面寻找 End!!!
- 【jmeter】请求域名解析失败,添加本地代理
jmeter HTTP请求URL中使用域名 http://xxx.xxx.xxx,异常:java.net.UnkownHostException 原因:请求域名没有被解析成功,该http请求没有通过本 ...