paramiko模块

该模块基于SSH服务用于连接远程服务器并执行相关操作

SSHClient

用于连接远程服务器并执行基本命令

import paramiko

#创建SSH对象
ssh = paramiko.SSHClient()
#允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接服务器
ssh.connect(hostname='192.168.0.200', port=22, username='root', password='123456')

#执行命令
stdin, stdout, stderr = ssh.exec_command('ifconfig')
#获取命令结果
result = stdout.read()
# res,err = stdout.read(), stderr
# result = res if res else err   #三元运算
print(result.decode())

#关闭连接
ssh.close()
SFTPClient

用于连接远程服务器并执行上传下载

import paramiko

transport = paramiko.Transport(('192.168.0.200',22))
transport.connect(username='root', password='123456')

sftp = paramiko.SFTPClient.from_transport(transport)  #将连接对象传递其处理
#sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())
#即新建一个SFTPClient对象,该对象复用之前的SSH连接,因此,我们使用sftp传输文件时,不需要再次进行用户认证。

#上传文件到服务器 /tmp/test
sftp.put('file_test', '/tmp/test')
#下载文件
sftp.get('/tmp/test.py', 'test2')

transport.close()

基于公钥密钥上传下载
(对于windows,可将一个与服务端建立SSHkey的私钥copy过来从而跟服务端进行无密码登录)

import paramiko

private_key = paramiko.RSAKey.from_private_key_file('rsa_file')
transport = paramiko.Transport(('192.168.0.200',22))
transport.connect(username='root', pkey= private_key)

sftp = paramiko.SFTPClient.from_transport(transport)  #将连接对象传递其处理
#上传文件到服务器 /tmp/test
sftp.put('file_test', '/tmp/test')
#下载文件
# sftp.get('/root/.ssh/id_rsa', 'ras_file')

transport.close()

类 Fabric 主机管理程序开发:

  1. 运行程序列出主机组或者主机列表
  2. 选择指定主机或主机组
  3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载)
  4. 充分使用多线程或多进程
  5. 不同主机的用户名密码、端口可以不同

https://github.com/jinboxu/multiple-pc-manager-program/tree/master

你可能感兴趣的:(paramiko模块)