Python_4-远程连接Linux

文章目录

  • 使用Python通过SSH自动化Linux主机管理
    • 代码
    • 执行ls结果:
    • 文件传输:

使用Python通过SSH自动化Linux主机管理

在系统管理与自动化运维中,SSH(Secure Shell)是一个常用的协议,用于安全地访问远程计算机。Python提供了一个名为paramiko的库,它使得通过SSH进行远程操作变得简单。本文将展示如何使用paramiko库实现远程Linux主机的命令执行和文件上传。

实现python编写代码远程登录linux主机,执行一条命令ls
实现python编写代码远程给linux主机上传一个文件

代码

import paramiko


def ssh_connect_and_execute_command(host, username, password, command):
    """
    连接到SSH服务器并执行命令。

    参数:
    - host: 远程主机的IP地址
    - username: SSH登录用户名
    - password: SSH登录密码
    - command: 要执行的命令

    返回:
    - 命令的输出结果
    """
    # 创建 SSH 客户端并连接
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(hostname=host, username=username, password=password)

    # 执行命令
    stdin, stdout, stderr = client.exec_command(command)

    # 获取命令输出和错误信息
    output = stdout.read().decode()
    error = stderr.read().decode()

    # 打印输出和错误信息
    print(output)
    if error:
        print(f"Error: {error}")

    # 关闭连接
    client.close()

    return output


def ssh_connect_and_upload_file(host, username, password, local_path, remote_path):
    """
    连接到SSH服务器并上传文件。

    参数:
    - local_path: 本地文件的路径
    - remote_path: 远程文件的目标路径
    """
    # 创建 SSH 客户端并连接
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(hostname=host, username=username, password=password)

    # 上传文件
    sftp = client.open_sftp()
    sftp.put(local_path, remote_path)

    # 关闭SFTP会话
    sftp.close()

    # 关闭SSH连接
    client.close()


# 使用示例
if __name__ == "__main__":
    # Linux 主机信息
    host = "192.168.204.133"
    username = "luruijie"
    password = "********"

    # 执行命令
    command = "ls"
    print("Executing command:", command)
    output = ssh_connect_and_execute_command(host, username, password, command)
    print("Command output:", output)

    # 上传文件
    local_path = "test_remote.txt"
    remote_path = "/home/luruijie/文档/test_remote.txt"
    print("Uploading file from", local_path, "to", remote_path)
    ssh_connect_and_upload_file(host, username, password, local_path, remote_path)

执行ls结果:

执行结果
Linux终端中验证
结果比对

文件传输:

传输文件


安全注意事项

  • 出于安全考虑,不建议在脚本中硬编码密码。考虑使用环境变量或配置文件来存储敏感信息。
  • 使用密钥认证代替密码认证可以提高安全性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【0day】湖南建研工程质量检测系统InstrumentUsageRecordExport接口处存在任意文件读取漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

发那科Fanuc数控网络IP配置设定教程

1.在主面板如图按system键,进入系统界面 2.按右翻页切换键,切换到内嵌选项,按内嵌按钮跳转至设置IP界面,设置ip 3.按Focas2按钮,跳转至设置端口号和超时时间界面。设置端口号和时间之后,重启设备。注意&…

MES生产系统与数字孪生双重结合:智慧制造工厂的新引擎

随着数字化浪潮的推动,制造行业正在经历着前所未有的变革。在这个变革的浪潮中,MES生产制造系统与数字孪生技术的深度融合成为了制造工厂未来发展的核心驱动力。这种结合不仅提升了生产效率,优化了资源配置,降低了运营成本&#x…

2024年 Java 面试八股文——SpringCloud篇

目录 1.Spring Cloud Alibaba 中的 Nacos 是如何进行服务注册和发现的? 2.Spring Cloud Alibaba Sentinel 的流量控制规则有哪些? 3.Spring Cloud Alibaba 中如何实现分布式配置管理? 4.Spring Cloud Alibaba RocketMQ 的主要特点有哪些&…

HCIP的学习(12)

OSPF优化 ​ OSPF的优化主要目的是为了减少LSA的更新量。 路由汇总-----可以减少骨干区域的LSA数量特殊区域-----可以减少非骨干区域的LSA数量 OSPF路由汇总 域间路由汇总-----在ABR设备上进行操作 [GS-R2-ospf-1-area-0.0.0.1]abr-summary 192.168.0.0 255.255.224.0 [GS-…

什么是抖音橱窗?它和抖音小店有什么区别?普通人更适合做哪个?

大家好,我是电商糖果 相信有很多想在抖音卖货的朋友,都会搞不清抖音橱窗是什么? 甚至会把它和抖音小店当成一个项目,也不知道哪个更适合自己。 自己越了解发现越迷糊,有的说不需要直播,粉丝,…

汇智知了堂鸿蒙课程全新升级,权威师资引领AI新纪元

在人工智能飞速发展的今天,汇智知了堂紧跟时代步伐,全面升级鸿蒙课程,以权威师资、实战导向、互动教学、资源支持为核心,为广大学员带来前所未有的学习体验! 首先,汇智知了堂鸿蒙课程汇聚了业内知名专家&…

软件设计师-应用技术-数据流图题1

基础知识及技巧: 0. 概念: 在结构化分析中,数据流图用来记录系统中的数据和数据在特定的过程中的流动,即数据如何被采集、处理、保存和使用的(围绕信息系统的功能)。 1. 元素实例: 补充知识:** 外部实体…

sqlx执行案例

SQLx简介 SQLx是Rust语言中的一个异步SQL数据库连接库,它支持多种数据库,如PostgreSQL、MySQL和SQLite。SQLx提供了简单的API和异步执行查询的能力,使得Rust程序员可以轻松地与数据库交互1。 本章节以PostgreSQL为例。 目录结构 cargo.tom…

区块链开发用的是哪种编程语言?

区块链技术作为近年来备受瞩目的新兴技术之一,其核心的特性之一就是去中心化、安全性高、透明度高和可扩展性强。而区块链的开发语言则是实现这一技术的关键因素之一。那么,区块链开发语言是哪一种编程语言呢? 一、区块链开发语言的特点和选…

五一热度最大,销量最高的十大随身WiFi!某东、某宝倾力推荐!2024随身wifi靠谱品牌推荐!随身wifi怎么选?

还在争论谁才是最强的随身WiFi?要我说别再争了!直接用事实说话!看看五一小长假期间,消费者购买最多、评价最好的十款随身WiFi!数据综合了某宝、某东、某多多,绝对真实可靠! 第一名:格…

今日详解,教你如何不直播在视频号卖货

大家好,我是电商笨笨熊 视频号作为背靠微信的平台,从不需要考虑自身的流量问题, 因此在视频号推出之后就有大批的主播从其他平台转入视频号; 而这时候很多普通人应该也发现了新的机会,不再去内卷抖音、快手直播&…

Java Jackson-jr 库使用介绍

介绍 Jackson-jr 是一个轻量级的Java JSON 处理库。这个库被设计用来替代 Jackson 的复杂性。对比 Jackson 的复杂 API,Jackson-jr 的启动速度更快,包大小更小。 虽然Jackson databind(如ObjectMapper)是通用数据绑定的良好选择…

[SaaS]建筑领域的sd应用

AirchiDesignhttp://www.aiarchi.art/#/建筑学长——千万建筑师的资源库和AI绘图创作平台建筑学长官网,为青年设计师建立的线上资源共享及AI绘图创作渲染平台,免费提供海量设计案例、CAD图纸、SU模型、PS素材、软件插件下载,提供丰富的设计软件教学与灵感参考素材图库。https:/…

贵州航天电科:“小程序+二维码”,消防器材巡检系统上线

近日,网信部完成轻量化的二维码巡检功能,消防器材巡检系统上线!通过“小程序二维码”结合方式,实现灭火器、消火栓等消防器材全面巡检。 前期,网信部联合行政保卫部开展消防器材台账信息数据核查,确保台账信…

Unity 性能优化之GPU Instancing(五)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 前言一、GPU Instancing使用方法二、使用GPU Instancing的条件三、GPU Instancing弊端四、注意五、检查是否成功总结 前言 GPU Instancing也是一种Draw call…

5.06号模拟前端面试8问

5.06号模拟前端面试8问 1.promise如何实现then处理 在JavaScript中,Promise 是一个代表异步操作最终完成或失败的对象。它有三种状态:pending(等待),fulfilled(完成),rejected&…

【driver3】proc文件系统,内存分配,数据类型/移植/对齐,内核中断,通过IO内存访问外设,PCI

文章目录 1.创建proc文件系统接口:之前调试内核时都是通过prink打印内核信息,通过dmesg查看输出的信息。新调试方法:利用proc文件系统在pro文件夹下创建接口,读写这个接口就可实现对内核的调试2.内核内存分配函数:top&…

pcm是什么文件格式?pcm文件怎么播放?

PCM(Pulse Code Modulation)并非一种具体的文件格式,而是一种音频编码方式。它产生于早期数字音频技术的发展,是一种将模拟音频信号转换为数字信号的编码方式。PCM被广泛用于音频录制和存储领域。 主要特性及常见的使用场景 PCM文…

CACTER AI实验室:AI大模型在邮件安全领域的应用

随着人工智能技术的飞速发展,AI已经深入到生活的各个领域。AI大模型在邮件安全领域展现出巨大潜力,尤其是反钓鱼检测上的应用,正逐渐展现出其独特的价值。 4月24日,CACTER AI实验室高级产品经理刘佳雄在直播交流会上分享了CACTER …