paramiko包含两个核心组件:SSHClient和SFTPClient

SSHClient

SSHClient的作用类似于Linux的ssh命令,是对SSH会话的封装

该类封装了传输Transport,通道Channel及SFTPClient建立的方法open_sftp,通常用于执行远程命令

这个一般不怎么使用,如果需要远程执行命令只需要ssh usr@host ‘command’

实在不行就去做一个免密登录,ssh-keygen,ssh-copy-id。

SFTPClient

SFTPClient的作用类似与Linuxsftp命令,是对SFTP客户端的封装

用以实现远程文件操作,如文件上传、下载、修改文件权限等操作

一般连接操作:

1
2
3
trans = paramiko.Transport((host, 22))
trans.connect(username = user, password = pwd)
sftp = paramkio.SFTPClient.from_transport(trans)

防止报错连接操作

1
2
3
4
5
6
trans = paramiko.Transport((host, 22))
try:
trans.connect(username = user, password = pwd)
except Exception as e:
print(e)
sftp = paramkio.SFTPClient.from_transport(trans)

sftp常用操作

  • sftp.put(localpath, remotepath, callback=None, confirm=True)

    • 解释:上传本地路径为localpath的文件到目标主机remotepath处
  • sftp.get(remotepath, localpath, callback=None)

    • 解释:下载远程路径为remotepath路径的的文件到本地主机localpath处
  • open(filename, mode=’r’, bufsize=-1)

    • 解释:打开位于远程主机上的文件,与open函数类似,返回文件对象
  • listdir(path=path)

    • Explain:返回给定路径下文件及目录的列表,默认路径为当前工作目录(这个方法感觉没有os.walk好用,想要层层获取文件还需要结合递归进行调用)
  • chdir(path=None)

    • Explain:修改当前SFTP连接会话的工作目录
  • lstat(path)

    • Explain:检索当前path所指向的文件信息
  • mkdir(path,mode=511)

    • Explain:根据path在目标主机创建默认权限为511的目录
  • rmdir(path)

    • Explain:删除给定path所指向的目录
  • remove(path)

    • Explain:删除给定path所指向的文件