链接远程服务器执行命令

import paramiko
host = '107.182.21.166'
port = 22
username = 'root'
paasword = 'xxxxxxxxxx'

方法一:分离式创建链接对象

trans = paramiko.Transport((host, port))
trans.connect(username=username, password=paasword)  # 密码
# ssh连接对象
ssh = paramiko.SSHClient()
# 绑定服务器连接
ssh._transport = trans

方法二: 一次创建

# ssh连接对象
ssh = paramiko.SSHClient()
# 直接创建ssh链接
ssh.connect(hostname=host,port=port,username=username,pkey=private) 

使用密钥链接

创建密钥对象

# ssh连接对象
ssh = paramiko.SSHClient()
# #目的是接受不在本地Known_host文件下的主机。
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
# 绑定服务器连接
ssh.connect(hostname=host,port=port,username=username,pkey=private) # 直接创建ssh链接


更改链接密码为密钥链接

# trans.connect(username=username, password=paasword)  # 密码
trans.connect(username=username, pkey=private)  # 密钥链接

执行命令

"""
获取命令结果
stdin,显示输入的信息
stdout,显示输出的信息
stderr,显示错误信息
"""
stdin, stdout, stderror = ssh.exec_command('curl cip.cc')
print(stdout.read().decode('utf-8'))

一个小例子

import paramiko
host = '107.182.21.166'
port = 22
username = 'root'
paasword = 'xxxxxxxxxx'
# ssh连接对象
ssh = paramiko.SSHClient()
# #目的是接受不在本地Known_host文件下的主机。
# 绑定服务器连接
ssh.connect(hostname=host,port=port,username=username,password=paasword)
stdin, stdout, stderror = ssh.exec_command('curl cip.cc')
print(stdout.read().decode('utf-8'))

链接远程服务器上传下载文件

# # sftp协议对象
# sftp = trans.open_sftp_client()
sftp = paramiko.SFTPClient.from_transport(trans)

# 上传操作
sftp.put('2.jpg', '3.jpg', callback=progress)
# 下载操作
sftp.get('status.sh', 'status.txt', callback=progress)  #回调函数,接收已经传输大小,总大小


def progress(count, file_size):
    ''' 进度条 '''
    sign_num = int(count / file_size * 100)  # 打印多少个符号 #
    bar = '\r[%s> %s%%]\n' % (sign_num * '#', sign_num) if sign_num == 100 else '\r[%s> %s%%]' % (
        sign_num * '#', sign_num)
    print(bar, end='')
最后修改:2020 年 01 月 02 日 04 : 32 PM