Python实现SSH远程操作Linux(paramiko库)

news2024/9/29 21:28:07
参考:https://blog.csdn.net/qq_40558166/article/details/100172501

一、官网

https://www.paramiko.org/

二、安装库

1.命令

pip install paramiko 

pip install paramiko –i https://pypi.douban.com/simple/

 三、辅助软件(可忽略)

1.Xshell(执行命令)

根据ip,端口,用户名,密码,连接 linux 的黑窗口(shell窗口)

2.Xftp(传输文件)

根据ip,端口,用户名,密码,连接 linux 文件目录

3.linux服务器

可在本地虚拟机上安装,可以租用“弹性云服务器”(不用的时候删掉不计费)。

四、非交互式连接

每次执行一次命令,相当于打开一个黑窗口。想要在一个窗口执行多条shell语句,用分号隔开

import paramiko

# 1.创建一个客户端
ssh = paramiko.SSHClient()
# # 2.创建一个白名单
know_host = paramiko.AutoAddPolicy()
# 3.设置不提醒
ssh.set_missing_host_key_policy(know_host)
# 4.连接服务器
ssh.connect(hostname='XXX', port=22, username='root', password='XXX')
# 5.执行linux命令
while True:
    commnd = input('请输入命令:')
    stdin, stdout, stderr = ssh.exec_command(commnd)
    # stdin 标准输入     文件对象 写权限
    # stout 标准的输出   文件对象 读权限
    # stderr 特殊的输出  文件独享 读权限
    # 查看输出结果
    print(stdout.read().decode())

# 6.关闭连接
ssh.close()

所遇问题:ls不输出任何内容

原因:登录后,当前所在目录为 /root,此目录下无任何文件。

 

cd ..;ls

 

 五、交互式连接

连接后,相当于打开一个黑窗口,可在当前窗口分次输入多条命令

import paramiko

# 创建客户端
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接
ssh.connect(hostname='XXX', port=22, username='root', password='XXX')

# 创建一个shell
shell = ssh.invoke_shell()
shell.settimeout(1)
# 获取命令
command = input('>>') + '\n'
# 发送命令
shell.send(command)

while True:
    if command == 'q' + '\n':
        break
    try:
        # 获取返回的结构
        recv = shell.recv(65535).decode()
        if recv:
            print(recv)
        else:
            continue
    except:
        command = input('>>') + '\n'
        # 发送命令
        shell.send(command)

ssh.close()

六、通过python连接ftp(实现上传和下载)

import paramiko
XXX
trans = paramiko.Transport(sock=('XXX'))

trans.connect(username='root', password='XXX')

sftp = paramiko.SFTPClient.from_transport(trans)

# sftp.put('你要上传的文件','上传的位置/文件名')
#sftp.put('2.png','/2.png')#存储的文件名不同,起到重命名的作用
# sftp.get('你要下载的文件','下载的位置/文件名')
sftp.get('/2.png', '2.png')#存储的文件名不同,起到重命名的作用

sftp.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Node.js计算机毕业设计黑格伯爵国际英语贵族学校官网Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

Ubuntu 配置本地root登录

Ubuntu 配置本地root登录–18.04 给root用户设置密码 按照下图方式 命令:sudo passwd root 切换到root用户 使用 su 或者是 su root 切换到 root 修改配置文件 进入该目录: cd /usr/share/lightdm/lightdm.conf.d/ 查看文件 ls 使用gedit 编辑文…

Arduino UNO新手零基础入门学习博客汇总

写在开头 最近在上Arduino的课,可以说Arduino对新手来说非常友好了,因为相比于51和32,Arduino的库函数下载就好,不需要自己去写,就很方便 我的硬件设备 博客汇总 博客内容大多数以实际案例为主,基本都是…

机器学习100天(七):007 简单线性回归理论

机器学习100天,今天讲的是简单线性回归理论。 首先来看第一个问题:什么是线性回归?我们先引入一个例子。 假如我现在有一份数据,这份数据是一些地区人口和对应房价的信息。我们把这份数据展示在二维平面上。横坐标是人口,纵坐标是房价,红色的点就表示每个地区的实际人口…

论文精读:EfficientDet: Scalable and Efficient Object Detection

Abstract 首先,本篇论文提出了一种加权双向特征金字塔网络(BiFPN),进行简单、快速的多尺度特征融合;其次,作者提出了一种复合尺度方法,同时统一调整所有主干、特征网络和box/类别预测网络的分辨…

kali linux的安装教程

kali linux的安装教程 在网上输入网址https://www.kali.org/get-kali/#kali-virtual-machines。 向下滚动鼠标滑轮选择如下图所示的图标进行安装iso镜像文件。 我们打开虚拟机,选择创建新的虚拟机 选择其中的自定义,随即点击下一步 点击下一步 点击下一步…

uboot通过bootargs传递内核中的模块传递参数

前言 bootargs是uboot向内核传递参数时使用的,本次我们要验证的是bootargs向内核启动后加载的模块传递的参数,真正的跨过山和大海。跟着我的脚步,来一次bootargs之旅。 这是一个综合性,系统性很强的实例验证,要做这个…

模式识别-期末复习题(问题集锦)

1.什么是模式?监督模式识别和非监督模式识别的典型过程分别是什么? 模式:指需要识别且可测量的对象的描述 监督模式识别:分析问题→原始特征提取→特征提取与选择→分类器设计 非监督模式识别:分析问题→原始特征提…

C++ Reference: Standard C++ Library reference: Containers: map: map: insert

C官网参考链接&#xff1a;https://cplusplus.com/reference/map/map/insert/ 公有成员函数 <map> std::map::insert C98 single element (1) pair<iterator,bool> insert (const value_type& val); with hint (2) iterator insert (iterator positio…

【密码学】MD5、UUID,加盐,JWT的理解与使用范例

文章目录MD5加密&#xff1a;1、MD5加密安全访问认证示例代码&#xff1a;2、UUID简介&#xff1a;使用&#xff1a;3、加盐原理&#xff1a;示例代码&#xff1a;4、jwt认知&#xff1a;JWT 结构&#xff1a;范例代码&#xff1a;MD5加密&#xff1a; 1、MD5加密 Message Di…

计算机毕业设计springboot+vue基本微信小程序的疫情防控平台系统

项目介绍 当今社会疫情防控平台是必不可少的,大家都在听从政府的号召在居家隔离,不管是在城市还是在乡镇、农村,这引起我的注目,设计一套社区疫情防控系统,疫情防控需要大家共同努力、团结对社区居民进行了新型冠状病毒肺炎防控知识普及和宣传教育。针对这一需求,本文设计并实现…

LVS详细介绍,这么讲不信你不明白负载均衡

Linux virtual server&#xff0c;是一个基于集群技术和Linux操作系统&#xff0c;目的是实现一个高性能、高可用的服务器&#xff0c;主要工作在网络层。 他采取IP负载均衡&#xff0c;也叫三层负载均衡&#xff08;因为工作在OSI模型的第三层--网络层&#xff09;&#xff0…

java计算机毕业设计springboot+vue旅游攻略平台

项目介绍 目前,我国旅游业正处于高度发展的状态。越来越多的人在假日里选择出游作为放松自己身心的手段。随着网络的普及和发展,人们开始习惯性地在做某事之前先在网络上浏览相关的内容。旅游网站能够帮助游客了解景点相关信息,推出相应的线路信息供游客们选择,并查看相应的旅…

计算机网络实验——路由器的配置静态与RIP配置

前言 由于几个资料和老师给的ppt说的都不清楚&#xff0c;自己也没想到什么很巧妙的归纳方法&#xff0c;写个总结记录一下。 想必静态路由配置的过程中唯一的难点就是ip route这个指令&#xff0c;其他的什么添加接口&#xff0c;设置ip啥的都是基础路由配置中的内容&#xf…

2023春招面试专题:JAVA基础高频面试

ArrayList和LinkedList有哪些区别 ArrayList扩容机制: ArrayList() 会使用长度为零的数组ArrayList(int initialCapacity) 会使用指定容量的数组public ArrayList(Collection<? extends E> c) 会使用 c 的大小作为数组容量add(Object o) 首次扩容为 10&#xff0c;再次…

3D激光里程计其一:ICP

这里写目录标题1. ICP 整体流程2. ICP 的数学表示3. 基于 SVD 的 ICP3.1 旋转部分求解3.2 平移部分求解4. 基于优化的 ICP5. ICP 系列汇总Reference: 深蓝学院-多传感器融合 1. ICP 整体流程 目的&#xff1a;有两个相似的刚体点云&#xff0c;它们之间没有做好配准&#xff…

Golang原理分析:闭包及for range延迟绑定问题原理及解决

1.Golang中的闭包 1.1.什么是闭包 当一个函数引用了环境的变量&#xff0c;被引用的变量与该函数同时存在组成的系统&#xff0c;被称为闭包。 闭包 环境的变量 函数。 以下JavaScript代码展示了一个基础的闭包&#xff1a; name是init函数中的内部变量displayName()是i…

机器学习 鸢尾花(Iris Flower)数据集分析

目录 一&#xff1a;加载数据 二&#xff1a;提取特征数据 三&#xff1a;提取标签数据 四&#xff1a;数据划分 一&#xff1a;加载数据 加载数据&#xff0c;查看数据特征 from sklearn.datasets import load_iris# 1 加载数据 鸢尾花load_iris iris_datasets load_iri…

数据校验及在数据校验的情况下增加headers拿回数据

什么是数据校验&#xff1a; 当你向一个数据端口请求数据时&#xff0c;如果这个数据端口没有设置&#xff1a;Access-Control-Allow-Origin&#xff1a;*&#xff0c;那就是存在跨域限制了&#xff0c;你是拿不回来数据的。图示&#xff1a; 但是有些数据端口是设置了 Access…

【JS ES6】了解学习set类型和weakset类型

✍️ 作者简介: 前端新手学习中。 &#x1f482; 作者主页: 作者主页查看更多前端教学 &#x1f393; 专栏分享&#xff1a;css重难点教学 Node.js教学 从头开始学习 ajax学习 目录set类型与array和object的区别set元素检测与管理类型转换的重要性遍历set类型的方式使用set…