相信大家应该都接触过Linux操作系统(Ubuntu、Centos等),那么在使用的Linux操作系统需要使用一些远程ssh工具,尤其是公网服务器。

常用的ssh工具主要有:Xshell、MobaXterm、Termius等

上传文件到远程Linux服务器:Xftp、Filezilla 等

这些工具有免费,有收费的。并且价格小贵。今天辰哥就来教大家如何用Python连接远程Linux服务器,实现执行命令和上传文件。这里用到的Python库是Paramiko

核心知识点(亮点):

1、Python连接远程Linux服务器

2、执行命令并返回结果

3、上传文件到远程Linux服务器

4、从远程Linux下载文件

01 Paramiko库

1.安装paramiko库

在开始编写代码之前先安装一下Python连接Linux服务器的库,安装命令如下:

  1. #1、安装依赖包
  2. pip install ecdsa
  3. pip install Crypto
  4. pip install Twisted
  5. #2、安装paramiko
  6. pip install paramiko

提示:先安装三个依赖库,再安装Paramiko,直接安装Paramiko会报错。

2. paramiko核心组件

SSH组件:SSHClient,作用类似于Linux的ssh命令,用于执行远程命令。

SFTP组 件:SFTPClient,作用类似于Linux的sftp命令,用于文件上传、下载、修改文件权限等。

02 SSHClient

1、SSHClient常用方法介绍

这里辰哥以自己的远程服务器为例给大家演示,首先先连接服务器

  1. import paramiko
  2. # ip、用户名、密码
  3. ip = "远程Linux的IP地址"
  4. port = 22
  5. user = "root"
  6. password = "密码"
  7. # 创建SSHClient 实例对象
  8. ssh = paramiko.SSHClient()
  9. # 调用方法,表示没有存储远程机器的公钥,允许访问
  10. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  11. # 连接远程机器,地址,端口,用户名密码
  12. ssh.connect(ip, port, user, password, timeout=10)

执行linux命令,如:ls

  1. # 输入linux命令
  2. command1 = "ls"
  3. ssh.exec_command(command1)
  4. # stdout 为正确输出,stderr为错误输出
  5. stdin, stdout, stderr = ssh.exec_command(command2)
  6. # 输出命令执行结果
  7. result = stdout.read()
  8. print(result)

xshell返回结果:

Python执行代码结果:

2、执行多条Linux命令

上面的案例只是执行一条Linux命令,在实际应用中往往需要执行2条或者2条以上的Linux,下面演示如何执行多条命令

错误的方式

  1. # 输入linux命令
  2. command1 = "cd /www/wwwroot"
  3. command2 = "ls"
  4. ssh.exec_command(command1)
  5. stdin, stdout, stderr = ssh.exec_command(command2)
  6. # 输出命令执行结果
  7. result = stdout.read()
  8. print(result)

上面的命令是先执行:cd /www/wwwroot ,进入到wwwroot,再查看里面的文件夹,下面是xshell里面执行的结果

Python代码执行的结果

可以看到结果和之前的一样,所以这种方式是错误(辰哥一开始也是这样干的,这里就给大家提个醒)

正确的方式:

  1. # 输入linux命令
  2. command = "cd /www/wwwroot ;ls"
  3. stdin, stdout, stderr = ssh.exec_command(command)
  4. # 输出命令执行结果
  5. result = stdout.read()
  6. ## bytes 转 str
  7. result = str(result)
  8. result = result.split('\\n')
  9. for i in result:
  10. print(i)

直接在用;把多条命令隔开即可,转为str后,通过\\n去分割结果,按行输出

03 SFTPClient

1、SFTPClient常用方法介绍

2、 上传文件到Linux

这里先在本地新建一个文本文件:辰哥.txt ,并在里面输入了一些内容

连接Linux服务器

  1. # 获取Transport实例
  2. tran = paramiko.Transport(('远程Linux的ip', 22))
  3. # 连接SSH服务端,使用password
  4. tran.connect(username="用户名", password='密码')
  5. # 获取SFTP实例
  6. sftp = paramiko.SFTPClient.from_transport(tran)

上传文件

  1. # 设置上传的本地/远程文件路径
  2. localpath = "D:/公众号/0603/辰哥.txt"
  3. remotepath = "/www/wwwroot//辰哥.txt"
  4. # 执行上传动作
  5. sftp.put(localpath, remotepath)
  6. # 关闭连接
  7. tran.close()

效果如下:

3、从Linux服务器下载文件

辰哥在Linux服务器新建了一个文本文件:Python研究者.txt ,并写入内容

下载文件

  1. localpath2 = "D:/公众号/0603/Python研究者.txt"
  2. remotepath2 = "/www/wwwroot/Python研究者.txt"
  3. # 执行下载动作
  4. sftp.get(remotepath2, localpath2)
  5. # 关闭连接
  6. tran.close()

效果:

04 小结

本文讲解了Paramiko库,并讲解ssh和sftp两大组件,设计的核心知识点(亮点):

1、Python连接远程Linux服务器

2、执行命令并返回结果

3、上传文件到远程Linux服务器

4、从远程Linux下载文件

再见Xshell、Xftp!Python执行Linux命令、上传下载远程文件的更多相关文章

  1. python执行linux命令的两种方法

    python执行linux命令有两种方法: 在此以Linux常用的ls命令为例: 方法一:使用os模块 1 2 3 shell# python >> import os >> ...

  2. linux系统上传下载命令rz和sz的教程

    (一)安装方法汇总(注意:一下命令如果没有权限的需要在每个命令前面加一个sudo) 1.安装方法(推荐) sudo yum install lrzsz 2.在安装Linux系统时选中“DialupNe ...

  3. linux下常用FTP命令 上传下载文件【转】

    1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...

  4. 向linux服务器上传下载文件方式收集

    向linux服务器上传下载文件方式收集 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ...

  5. 在Windows上使用终端模拟程序连接操作Linux以及上传下载文件

    在Windows上使用终端模拟程序连接操作Linux以及上传下载文件 [很简单,就是一个工具的使用而已,放这里是做个笔记.] 刚买的云主机,或者是虚拟机里安装的Linux系统,可能会涉及到在windo ...

  6. python之实现ftp上传下载代码(含错误处理)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之实现ftp上传下载代码(含错误处理) #http://www.cnblogs.com/kait ...

  7. Linux下不借助工具实现远程linux服务器上传下载文件

    # Linux下不借助工具实现远程linux服务器上传下载文件 ## 简介 - Linux下自带ssh工具,可以实现远程Linux服务器的功能- Linux下自带scp工具,可以实现文件传输功能 ## ...

  8. Xshell5下利用sftp上传下载传输文件

    sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp 与 ftp 有着几乎一样的语法和功能.SFTP 为 SSH ...

  9. SpringMVC文件上传下载(单文件、多文件)

    前言 大家好,我是bigsai,今天我们学习Springmvc的文件上传下载. 文件上传和下载是互联网web应用非常重要的组成部分,它是信息交互传输的重要渠道之一.你可能经常在网页上传下载文件,你可能 ...

随机推荐

  1. 0609-搭建ResNet网络

    0609-搭建ResNet网络 目录 一.ResNet 网络概述 二.利用 torch 实现 ResNet34 网络 三.torchvision 中的 resnet34网络调用 四.第六章总结 pyt ...

  2. vue 回顾

    ①.组件的注册 全局注册: // 注册 Vue.component('my-component', { template: '<div>A custom component!</di ...

  3. pc/shouji/weixin判断跳转

    pc 和 手机端 判断 function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android&q ...

  4. hdu4396 多状态spfa

    题意:       给你一个图,让你送起点走到终点,至少经过k条边,问你最短路径是多少.... 思路:       把每个点拆成50点,记为dis[i][j] (i 1---50 ,j 1---n); ...

  5. hdu4861 找规律了

    题意:      给你k个球和一个整数p,每个球的价值是 1^i+2^i+...+(p-1)^i (mod p),两个人轮流取球,最后谁的总价值也大谁就赢,问你先手能不能赢. 思路:      一开始 ...

  6. Python脚本写端口扫描器(socket,python-nmap)

    目录 Socket模块编写 扫描给定主机是否开放了指定的端口 python-nmap模块编写 扫描给定ip或给定网段内指定端口是否开放 一个用python写的简单的端口扫描器,python环境为 3. ...

  7. Day001 电脑常用快捷键

    电脑常用快捷键 Ctrl+C 复制 Ctrl+V 粘贴 Ctrl+A 全选 Ctrl+X 剪切 Ctrl+Z 撤销 Ctrl+S 保存 Alt+F4 关闭窗口(英雄联盟选英雄界面可以查看对面阵容(狗头 ...

  8. VS Code 远程开发

    听说有人想用VS Code实现远程开发,今天他来了 Remote Development Always reveal the SSH login terminal, 还可加装免密登录,一键登录尽显奢华 ...

  9. svn客户端访问失败,错误“请求的名称有效,但是找不到请求的类型”的解决

    1.问题描述:visualSVN客户端在其他机子访问出现以下问题(服务端装在我的电脑上,我本机客户端可以正常访问) 2. 原因分析:SVN客户端访问服务器需要输入URL地址,URL地址分为两种方式.一 ...

  10. JS String总结

    String常用总结 1.字符 length属性:表示字符串包含多少16位码元 charAt():方法返回给定索引位置的字符 charCodeAt() :可以查看指定码元的字符编码 String.fr ...