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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容