首页 > 编程语言 >python系列:远程SSH登录并执行命令,获取结果

python系列:远程SSH登录并执行命令,获取结果

时间:2022-10-29 16:33:03浏览次数:54  
标签:username pkey 执行命令 python self passwd SSH key ssh


需求:

机器A上执行Python代码登录连接到机器B,然后在机器B上执行命令

实现

#!/usr/bin/env python
#coding=utf-8

import paramiko, getpass,sys,traceback

class sshDemo():
def login_by_passwd(self, ip, port, username, passwd):
self.ip = ip
self.port = port
self.username = username
self.passwd = passwd
self.pkey = None

def login(self, username, key_path, passwd):
try:
self.pkey=paramiko.RSAKey.from_private_key_file(key_path)
except paramiko.PasswordRequiredException:
if not passwd:
passwd = getpass.getpass('RSA key password: ')
self.pkey = paramiko.RSAKey.from_private_key_file(key_path, passwd)

def ssh(self,shell):
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
if self.pkey:
ssh.connect(self.ip, self.port, self.username, compress = True, pkey= self.pkey)
else:
if not self.passwd:
self.passwd = getpass.getpass('input password: ')
ssh.connect(self.ip,self.port,self.username, self.passwd)
stdin, stdout, stderr = ssh.exec_command(shell)
res = stdout.readlines()
ssh.close()
return res
except:
type, value, tb = sys.exc_info()
return traceback.format_exception(type, value, tb)



if __name__ == '__main__':
myssh = sshDemo()
myssh.login("10.10.10.10",22,"nio4444","nio4444")
myssh.ssh("cd /tmp/ && tar -zcf fstab.tgz fstab")

标签:username,pkey,执行命令,python,self,passwd,SSH,key,ssh
From: https://blog.51cto.com/NIO4444/5806255

相关文章

  • Python系列:paramiko登录路由器执行命令
    demo#-*-coding:utf-8-*-importparamikoimporttimeif__name__=='__main__':transport=paramiko.Transport(('192.168.100.123:22',231))transport.conn......
  • Python系列:paramiko登录linux机器并执行命令code
    code#coding=utf-8importparamiko,getpass,sys,tracebackclassSSHUtils():deflogin(self,ip,port,username,passwd):self.ip=ipself.port......
  • python系列:paramiko中invoke_shell和exec_command的区别
    目录​​exec_command​​​​invoke_shell​​exec_command只能运行一次,命令执行完成后channel将关闭,不能被复用。invoke_shell使用get_pty()获取一个伪终端后,需要使用invo......
  • Python数据分析教程(三):实用代码
    Python数据分析教程专栏:数据分析-标签-孤飞-博客园(cnblogs.com)Python数据分析教程(一):Numpy-孤飞-博客园(cnblogs.com)Python数据分析教程(二):Pandas-孤飞-......
  • Python顺序、条件和循环
    文章目录​​顺序语句​​​​条件语句​​​​语法格式​​​​代码案例​​​​缩进和代码块​​​​空语句pass​​​​循环语句​​​​while循环​​​​语法格式​​......
  • python+unittest单元测试框架失败重跑3次机制+失败3次跳过用例【杭州多测师】【杭州多
    一、用函数实现:python+unittest单元测试框架失败重跑3次机制+失败3次跳过用例importsysimportfunctoolsimporttracebackimportinspectimportunittestdefretr......
  • Python函数
    文章目录​​函数的概念​​​​函数的定义格式​​​​函数的调用格式​​​​函数的调用方式​​​​链式调用​​​​嵌套调用​​​​递归调用​​​​默认参数与变长参......
  • Python判断中使用多个and和or的优先级与踩坑
    tags:PythonDebug一个问题最近刷力扣,想试试Python新支持的海象操作符,其实就是能在语句中赋值,类似下面这样:if(n:=len(nums)):returnFalse但是当出现下面这种......
  • c语言和python区别
    除了在语法使用上面的区别外,c语言和python的本质区别可能是在其语言性质上面的区别。简单来说C语言是编译语言,Python是脚本语言。1.C语言是编译型语言,经过编译后,生成机器码,......
  • python中for in的用法详解
    forin说明:也是循环结构的一种,经常用于遍历字符串、列表,元组,字典等格式:forxiny:循环体执行流程:x依次表示y中的一个元素,遍历完所有元素循环结束。例1:遍历字符串s='......