目录

简介-paramiko

安装paramiko

使用paramiko进行SSH连接

使用paramiko进行文件传输

与shell交互使用

补充

FTP传输文件


简介-paramiko

Python中实现远程连接需要用到外部模块,主要有paramikopexpect等。

paramiko主要执行远程连接和文件传输(即SSHClientSFTPClinet),非Python自带,需要手动安装。

安装paramiko

pip install --upgrade pip #更新pip版本
pip install paramiko      #安装

 使用paramiko进行SSH连接

def SshSingle():ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 设置白名单ssh.connect(hostname='192.168.222.128, username='root', password='123456', port='22')stdin, stdout, stderr = ssh.exec_command("ls -l /root")# 标准格式输入、输出、错误res, err = stdout.read(), stderr.read()result = res if res else errprint(result.decode())# 输出结果ssh.close()

set_missing_host_policy方法是将SSH连接的KEY保存到know_hosts中,采用AutoAddPolicy()是自动为你保存的意思不需要手动输入yes来建立信任。具体使用及其他方法使用规则请参考官方文档。

https://www.paramiko.org/

多线程进行SSH连接见后下文

使用paramiko进行文件传输

def DloadUpload():sftp = paramiko.Transport(sock=('192.168.222.128', 22))sftp.connect(username='root', password='123456')files = paramiko.SFTPClient.from_transport(sftp)# try:# Download# files.get("~/test.tx", "C:/Users/boy/Desktop/new.txt")# get中前面为远程服务器文件路径及文件名,后面为下载到本地的路径及文件名# 用例中本地平台为Windows# Uploadfiles.put("C:/Users/boy/Desktop/shell.txt", "/root/shell")# put中前面为本地文件路径及文件名,后面为上传到远程服务器的路径及文件名# filelist = files.listdir("/root/")# for f in filelist:#     files.get(os.path.join("/root/", f), os.path.join("C:/Users/boy/Desktop/", f)except Exception as result:print(result)sftp.close()

SFTPClient类其他方法介绍:

listdir,获取远程SFTP服务端指定目录列表,如批量下载一个目录下的所有文件,上述代码注释部分;

mkdir,在SFTP服务端创建目录;

remove,删除SFTP服务端指定目录;

stat,获取远程SFTP服务端指定文件信息

与shell交互使用

def SshShell():ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(hostname='192.168.222.128', username='root', password='123456', port='22')shell = ssh.invoke_shell()shell.settimeout(1)# cmd = input()# shell.send(cmd + '\r')while True:time.sleep(0.5)# 设置睡眠时间以打印返回结果recv = shell.recv(10240).decode()if recv:print(recv)cmd = input()if cmd == 'quit':  #当输入quit时退出交互breakelse:shell.send(cmd + '\n')ssh.close()

补充

利用多线程进行SSH连接

pool = [dict(host='192.168.222.128', username='root', password='123456', port='22'),dict(host='192.168.222.129', username='root', password='123456', port='22'),dict(host='192.168.222.130', username='root', password='123456', port='22')]
# 定义一个IP池
class SshThreading(threading.Thread):
# 封装def __init__(self, cmd, host, username, password, port):self.cmd = cmdself.host = hostself.username = usernameself.password = passwordself.port = portsuper(SshThreading, self).__init__()def run(self):ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(hostname=self.host, username=self.username, password=self.password, port=self.port)stdin, stdout, stderr = ssh.exec_command(self.cmd)res, err = stdout.read(), stderr.read()result = res if res else errprint("[ip:%s] \n%s" % (self.host, self.cmd))print(result.decode())ssh.close()def SshMUti():cmd = "ls -l /root"thread_pool = []for host in pool:t = SshThreading(host=host.get("host"),username=host.get("username"),password=host.get("password"),port=host.get("port"),cmd=cmd)# print(host.get("password"))thread_pool.append(t)for t in thread_pool:t.start()

FTP传输文件

与FTP服务器进行文件传输,需要ftplib

from ftplib import FTPdef FtpDownFile(allfile):a = []for f in allfile:a.append(f)# 可以先判断a是否不为空for i in range(len(a)):file_handler = open('C:/Users/boy/Desktop/' + a[i], 'wb').write# 确保写入目录用户具有写权限ftp.retrbinary('RETR %s' % a[i], file_handler)def FtpUpFile():file = open('C:/Users/boy/Desktop/123.txt', 'rb')ftp.storbinary('STOR %s' % '123.txt', file)file.close()if __name__ == '__main__':ftp = FTP()ftp.encoding = 'utf-8'ftp.connect(host='192.168.222.128', port=21)ftp.login("root", "123456")print(ftp.welcome)print('\n')ftp.cwd("/var/ftp/pub/")all_file = ftp.nlst()# FtpDownFile(all_file) #下载FtpUpFile()             #上传ftp.close()exit()

Python:SSH连接及FTP文件传输相关推荐

  1. python下载文件传到服务器_python实现FTP文件传输的方法(服务器端和客户端)

    用python实现FTP文件传输,包括服务器端和客户端,要求 (1)客户端访问服务器端要有一个验证功能 (2)可以有多个客户端访问服务器端 (3)可以对重名文件重新上传或下载 FTP(File Tra ...

  2. python下载文件传到服务器_python实现FTP文件传输(服务器端和客户端)

    用python实现FTP文件传输,包括服务器端和客户端,要求 (1)客户端访问服务器端要有一个验证功能 (2)可以有多个客户端访问服务器端 (3)可以对重名文件重新上传或下载 FTP(File Tra ...

  3. 基于python的文件传输程序_7个步骤,教你快速学会用python实现ftp文件传输功能(收藏了)...

    文章主要为大家详细介绍了python实现ftp文件传输功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下!!! 本文实例为大家分享了python实现ftp文件传输的具体 ...

  4. ssh连接服务器FTP传不了文件,ssh连接服务器FTP传不了文件

    ssh连接服务器FTP传不了文件 内容精选 换一换 Atlas 200 DK开发者板支持通过USB端口或者网线与Ubuntu服务器进行连接,连接示例图如图1所示.Atlas 200 DK连接Ubunt ...

  5. ftp文件传输工具,5款你会喜欢的ftp文件传输工具

    对于ftp文件传输工具,你了解多少?其实一般人也接触不到这种软件.ftp文件传输工具主要是针对从事网站管理的工作人员比较有利的一款工具.可以帮助他们快速的解决工作中的问题.方便.简单.快捷又明了的解决 ...

  6. 详解“FTP文件传输服务”安装配置实例

    "FTP文件传输服务"安装配置实例 家住海边喜欢浪:zhang789.blog.51cto.com 目录 简介 ftp工作原理 常见的FTP服务 Vsftpd服务器的安装 Vsft ...

  7. 网络协议从入门到底层原理(10)WebSocket、WebService、RESTful、HTTPDNS、FTP文件传输协议、邮件相关协议、IPv6

    其他协议 WebSocket WebSocket - 建立连接 WebService RESTful HTTPDNS FTP文件传输协议 邮件相关的协议(SMTP.POP.IMAP) POP vs I ...

  8. asc码转换 linux_Linux网络服务04——FTP文件传输服务

    Linux网络服务04--FTP文件传输服务 一.FTP连接及传输模式 1.控制连接:TCP 21,用于发送FTP命令信息 2.数据连接:TCP 20,用于上传.下载数据 3.数据连接的建立类型: ( ...

  9. 网络编程之FTP文件传输协议

    FTP文件传输协议: 一.简述: 1.TCP/IP协议簇,应用层协议,采用服务端与客户端通信方式共享文件. 2.FTP根目录:/            (如路径: /hello/) 3.现在的FTP一 ...

最新文章

  1. PHP遇到json解决的两个办法,转为数组,直接取值
  2. AngularJs 键盘事件和鼠标事件
  3. Openldap配置TLS加密传输(完整版——手动配置)
  4. php项目列表,php – 如何获取类似项目的列表
  5. Dottrace跟踪代码执行时间
  6. html移动端怎么做城市选择,移动端页面单位的选择(px, em, rem, vw)
  7. 初学Linux之程序安装
  8. 【nacos系列】windows安装与配置nacos
  9. Image File Format Specifications {转载}
  10. 对“才鸟”——动态显示扩展数据的改写
  11. Xmarks不会关闭了,太好了!
  12. mysql超卖问题处理_mysql 解决超卖问题的锁分析
  13. mysql8 update语句 where块的in方法内子查询不报错
  14. Python 练习实例100-39,有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
  15. 用 Python 一键批量自动生成合同
  16. 常微分方程的解法 (四): Matlab 解法
  17. mac浏览器没有网络,通讯软件(QQ、微信、飞书等)正常
  18. iPhone彻底删除的照片能恢复吗,2个找回永久删除照片的方法
  19. 微型计算机DEC影响零标志位吗,汇编语言中常用指令对标志位寄存器的影响
  20. 一文读懂 S7-1500 手册 - 关于常用资源的介绍

热门文章

  1. 《算法笔记》7.3 链表
  2. 什么人适合做计算机工作,适合少说话多做事的专业,出来的人都有稳定工作,工资也很理想...
  3. 4.2美团笔试2空间回廊
  4. Linux源码 哪个版本,有没有办法将不同版本的linux源码合并
  5. C++ 飞机大战小游戏 EGE
  6. Python:(使用matplotlib画图)次坐标轴,两个坐标轴
  7. 闲置书太多怎么处理?来这里原价回收!
  8. C++string去除前后空格
  9. python异常处理--猜字游戏
  10. Mybatis模糊查询