Python3一些常用的SSH连接_paramiko使用

一、SSH连接

可参考文章

(1)安装paramiko库,使用命令安装

pip install paramiko

1.2Paramiko的主要类

  • SSHClient: 最常用的类,表示一个SSH客户端连接。
  • SFTPClient: 用于SFTP传输操作。
  • Transport: 低级别的模块,可用来实现SSH2协议。
  • SSHClient主要方法:(先创建一个ssh对象:ssh)
    • ssh.connnect()
    • ssh.exec_command()
#1.用于连接到远程服务器。可以选择使用用户名和密码或密钥进行认证。
connect(hostname, port=22, username=None, password=None, pkey=None): 

#2.在远程服务器上执行指令
exec_command(command): 

#3.返回一个SFTPClient对象,可用于文件的上传与下载。
open_sftp(): 
  • SFTPClient主要方法:
#1.下载远程文件
get(remotepath, localpath, callback=None): 

#2.上传本地文件
put(localpath, remotepath, callback=None, confirm=True): 

#3.列出远程目录的内容
listdir(path=“.”): 

1.3示例代码

(1)异常处理机制

import paramiko

##----------创建SSH对象---------
ssh=paramiko.SSHClient()    
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  #允许连接不在已知文件中的主机


#-----------连接设备------------
def connect_device(ip_addr):
    try:
        ssh.connect(ip_addr, username='root', password='123')   #输入连接设备的参数
    except paramiko.AuthenticationException:
        print("Can't connect device for authentication failed!")
        return 'err'
    except socket.error:
        print("Can't connect device for unreachable server!")
        return 'err'
#-----------断开连接-------------
def disconnect_device():
    ssh.close() 

(2)提高安全性:使用SSH密钥进行连接

import paramiko

# 设置SSH连接参数
hostname = 'your_remote_host'
port = 22
username = 'your_username'
private_key_path = '/path/to/your/private/key'

# 创建SSH客户端,加载私钥文件
private_key = paramiko.RSAKey(filename=private_key_path)
client = paramiko.SSHClient()

# 自动添加主机密钥
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

try:
    # 连接远程主机,使用SSH密钥进行身份验证
    client.connect(hostname, port, username, pkey=private_key)

except paramiko.AuthenticationException as e:
    print(f"Authentication Error: {e}")

finally:    
    client.close()   # 关闭SSH连接,也可用如下disconnect_device函数断开连接

def disconnect_device():
    client.close()

二、生成日志

#生成ST_LOG日志

logger = logging.getLogger("LOG")     #初始化,name可不填
logger.setLevel(logging.DEBUG)        #设置日志等级:DEBUG,最低等级,所有报错信息都输出
ch = logging.FileHandler(('ST_LOG_modify_rcache') + time.strftime('%Y%m%d%H%M%S'))  #以年月日,时分秒的时间将日志输出到文件  (此处输入的是文件名,不能有空格和冒号)
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s") #日志输出格式
ch.setFormatter(formatter)           #设置日志输出格式(要先设置日志输出、日志格式)
logger.addHandler(ch)                #给logger添加handler,确定将日志log写到ch文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值