首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用paramiko和线程模块编写脚本-在单个ssh会话-ISSUE中使用多个命令

paramiko是一个用于Python的SSHv2协议的实现库,它可以用于在远程服务器上执行命令、传输文件等操作。线程模块则可以帮助我们实现多线程的功能,从而提高脚本的执行效率。

下面是一个使用paramiko和线程模块编写脚本,在单个SSH会话中使用多个命令的示例:

代码语言:txt
复制
import paramiko
import threading

def execute_ssh_command(hostname, username, password, command):
    # 创建SSH客户端对象
    client = paramiko.SSHClient()
    # 自动添加远程主机的SSH密钥
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    try:
        # 连接远程主机
        client.connect(hostname, username=username, password=password)
        # 执行命令
        stdin, stdout, stderr = client.exec_command(command)
        # 输出命令执行结果
        print(stdout.read().decode())
    except Exception as e:
        print(f"执行命令出错:{e}")
    finally:
        # 关闭SSH连接
        client.close()

def main():
    # 远程主机信息
    hostname = "远程主机IP"
    username = "用户名"
    password = "密码"

    # 需要执行的命令列表
    commands = [
        "ls",
        "pwd",
        "whoami"
    ]

    # 创建线程列表
    threads = []
    for command in commands:
        # 创建线程
        thread = threading.Thread(target=execute_ssh_command, args=(hostname, username, password, command))
        # 启动线程
        thread.start()
        # 将线程添加到线程列表
        threads.append(thread)

    # 等待所有线程执行完毕
    for thread in threads:
        thread.join()

if __name__ == "__main__":
    main()

上述代码中,我们首先定义了一个execute_ssh_command函数,用于连接远程主机并执行指定的命令。然后,在main函数中,我们定义了远程主机的信息和需要执行的命令列表。接下来,我们创建了多个线程,每个线程都会调用execute_ssh_command函数来执行一个命令。最后,我们使用join方法等待所有线程执行完毕。

这样,我们就可以在单个SSH会话中使用多个命令了。在实际应用中,可以根据需要修改远程主机的信息和命令列表,以满足具体的需求。

推荐的腾讯云相关产品:腾讯云服务器(CVM),腾讯云弹性公网IP,腾讯云云服务器密钥对等。您可以通过访问腾讯云官网(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和使用方式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

网工Python之路之paramiko 模块实验(一)初来乍到

实验目的: 用Python Paramiko 模块实现 SSH 登陆单个交换机LSW1(192.168.242.11),为其 LoopBack0 端口配置IP地址 1.1.1.1 /32。...123 PS: privilege 15这么设置是为了免去登陆时输入enable密码 Python 代码 代码讲解,大神书里专栏已逐条做了解释 # import 导入模块 import paramiko...会话 ssh_client.close 实验中观察 开启调测(实验可观察),执行代码过程,可以 debug 到交互包。...实验目的: 用Python Paramiko 模块实现 SSH 登陆单个交换机LSW1(192.168.242.11),为其 LoopBack0 端口配置IP地址 1.1.1.1 /32。...ssh Python 代码 代码讲解,大神书里专栏已逐条做了解释,我做的主要目标是把大神的 linux+思科设备,转成 windows + 华为设备。

1.6K10

python之paramiko模块

01 安装 pip install paramiko easy_install paramiko 导入模块没问题,安装成功 02 简单的ssh示例 使用用户名密码认证的方式,调用exec_command...SSHClient是SSH服务会话的高级表示。...支持三种设置 AutoAddPolicy:自动添加主机名秘钥到本地并保存,不依赖load_system_host_keys()的配置(上边的脚本使用的就是这种方式); RejectPolicy:自动拒绝未知的主机名秘钥...04 破解ssh口令的脚本脚本文档点击阅读原文获取,提取码:xza4) #coding:utf-8 import paramiko import threading def ssh_connect(...,对多线程使用不是很懂,使用的过程中出现了问题,思来想去也不知道为啥(我菜鸡),代码如下: 运行结果: 若有知道的大佬还望不吝赐教。

1.4K40
  • 简单的Python脚本,实现ssh登录配置路由器

    简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密认证的方式,进行远程服务器的连接。...因此,如果需要使用SSH从一个平台连接到另外一个平台,进行一系列的操作时,paramiko是最佳工具之一。 此外,由于常见的交换机都支持ssh,那么使用paramiko控制交换机变成现实。...安装 pip 安装方式 pip install paramiko 如果没有安装pycrypto,则需要先安装pycrypto库 使用 paramiko提供了多种连接方式,在此我们使用ssh的方式连接交换机并发送命令以实现配置交换机的目的...shiran123 PS: privilege 15这么设置是为了免去登陆时输入enable密码 python脚本 # import 导入模块 import paramiko import time...会话 ssh_client.close 此段代码是使用ssh登陆路由器R1,并创建loopback 0 接口,配置ip为1.1.1.1/32,然后保存配置。

    1.4K10

    EasyXMS(Python)

    EasyXMS EasyXMS是一个用于批量管理Linux/Unix服务器的简易系统, 如:多线程批量执行命令、多线程批量上传文件等功能....3.PyCrypto 2.1+ 模块(PyCrypto是使用Python编写的加密工具包) 下载地址:https://www.dlitz.net/software/pycrypto.../ 4.paramiko 模块(是用Python编写的支持SSH协议的模块使用easy_install 进行安装 三.环境安装 点击查看依赖软件包安装过程...也可以使用项目中的 one_key_install_paramiko.sh Shell脚本一键安装环境 请使用 source 脚本名 的方式来执行脚本 四.运行过程中产生的文件 脚本的执行过程...该文件是paramiko模块在运行过程中产生的日志文件 3.command_history.log 该文件是记录执行过的命令 4.command_result_history.log

    74360

    Paramiko远程操作Linux服务器

    本篇将介绍一个Python的第三方库Paramiko使用Paramiko,我们可以Python脚本中进行SSH连接Linux服务器并远程执行Linux命令。...「测试打工人如何学习」一文说过,职场打工人学习技能工具的很大原因是为了解决工作遇到的某些具体问题,我们学习Paramiko当然也是为了解决某些问题。...其实每次搭建环境所用的Linux命令几乎都是相同的,于是我们就可以借助Paramiko,将这些命令编写成Python脚本,进而实现自动搭建测试环境。...= client.exec_command(command) 在上述示例使用了 && 运算符来单个命令组合 cd 命令其他命令。...使用wget命令下载文件时文件为0KB 刚开始使用wget http://XXX/file.tar.gz下载文件时发现下载下来的文件为0KB,原因是执行wget命令时,Python脚本挂起,解决方案就是

    30420

    如何使用Aker配置你自己的Linux SSH跳转主机堡垒主机

    关于Aker Aker是一款功能强大的安全配置工具,该工具的帮助下,广大研究人员可以轻松配置属于自己的Linux SSH跳转主机或堡垒主机。...功能介绍 1、支持FreeIPA 4.2、4.34.4(可选); 2、可扩展性强,支持编写自己的模块; 3、会话重放; 4、提取会话命令; 5、SIEM-Ready JSON会话日志; 6、Elasticsearch...整合; 工具要求 软件要求 Linux(CentOS、FedoraUbuntu) Python 2.7 FreeIPA(可选) Redis Python模块 configparser urwid...paramiko wcwidth pyte redis 工具安装 安装并配置好了该工具所需的各种依赖组件之后,我们就可以一个FreeIPA客户端上或使用JSON配置文件来独立安装Aker了。...首先,广大研究人员需要使用下列命令将该项目源码克隆至本地: git clone https://github.com/aker-gateway/Aker.git /usr/bin/aker/ 接下来,使用下列命令安装该工具所需的其他

    25420

    网工Python之路之netmiko模块实验(三)连接多机

    网工Python之路之paramiko 模块实验(三)读取文件 网工Python之路之paramiko 模块实验(四)分组操作 网工Python之路之paramiko 模块实验(五)异常处理 网工...Python之路之paramiko 模块实验(六)FTP推送备份文件 网工Python之路之paramiko 模块实验(七)回显保存成文件,Win处理空行 实验拓扑: 【SSH 客户端】Win10...【透明交换机】SW1(启动即可,无需配置,给云彩扩展端口使用)。 【SSH 操作对象】Layer3Switch-x,IP为 192.168.242.1x/24。...(2)实验拓扑网络打通, PC 端可手工 ping 通设备,登录设备,执行命令。我们把设备列表的LSW5机器关闭,模拟网络不通。...至于try-except要except什么值呢?我是用IDLE命令好模式一个一个测出来的。 (2)实验这么久,今天发现如果ip_list.txt文件的末位有空白行的话,跑码会出错。

    1.3K20

    python paramiko

    paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密认证的方式,进行远程服务器的连接了,下面我们就来给各位一起验证一下python模块paramikossh安装与使用示例吧...函数调用过程需要注意的是,IP、username、passwd都是属于字符串型的,所以需要加引号。后面执行的cmd,如果有多个命令需要操作时,需要通过分号进行分割。...六、总结 paramiko模块是一个比较强大的ssh连接模块,以上的示例只是列出了该模块的一些简单的使用方法,还可以使用threading模块加块程序并发 的速度;也可以使用configparser模块处理配置文件...同样,虽然连fabric这样大名鼎鼎的软件使用ssh都是用paramiko模块进行的封装,不过你依然可以选择不使用它,你也可以选择pexpect模块实现封装一个简易的ssh连接工具、或者使用同样比较火的...paramiko模块是基于Python实现的ssh远程安全链接,实现命令远程、文件传输、SSH代理等功能。

    1.4K10

    paramiko模块线程,进程

    关于paramiko模块 paramiko是基于Python实现的ssh2远程安全连接,支持认证及密钥方式远程执行命令、文件传输,中间ssh代理等 paramiko的安装: 安装好之后,用paramiko...模块写一个简单的远程ssh运行命令,代码如下: 1 import paramiko 2 ssh = paramiko.SSHClient() 3 ssh.set_missing_host_key_policy...SSHClient类是一个SSH服务会话的高级表示,该类封装了传输(transport),通道(channel)及SFTPClient的校验,建立的方法,通常用于执行远程命令 connect方法 connect...SFTPClient类 SFTPClient根据SSH传输协议的sftp命令会话,实现远程文件操作:文件的上传、下载、权限、状态等操作。...,你有多少个cpu, Python执行的时候会淡定的同一时刻只允许一个线程运行 线程锁(互斥锁) 一个进程下可以启动多个线程多个线程共享父进程的内存空间,这样每个线程可以访问同一份数据,此时如果多个线程同时修改一份数据

    1.7K90

    网工Python之路之paramiko 模块实验(五)异常处理

    实验目的: 1、在生产环境,交换机的管理 IP 基本不可能像实验环境这样 11 到 15,有些交换机的管理 IP 甚至不同的网段,这种情况下,我们就不能简单的用 for loop 来循环 IP...我们实验4脚本基础上拿过来试跑一下, ip.txt 先剔除掉 LSW3 (192.168.242.13)的信息,针对性的观察断链了的 LSW2。...key generate rsa general-keys modulus 1024 3.配置sssh的信息 会话超时时间 ip ssh time-out 120 最大认证次数 ip ssh authentication-retries...配置管理地址 interface Vlan 1 ip address 192.168.242.11 255.255.255.0 更多精彩内容关注“释然IT杂谈” Python 代码 代码讲解,大神书里专栏已逐条做了解释...ssh 更多精彩内容关注“释然IT杂谈” Python 代码 代码讲解,大神书里专栏已逐条做了解释 import paramiko import time import getpass import

    80820

    Python执行或远程执行shell命令

    最近想要实现通过脚本循环再Linux下运行shell命令,经过探索发现使用Python语言有几种解决方案,在此简单记录。...方案一:脚本本地执行命令 Python中有两个库都可以实现运行shell命令的效果: import subprocess import os 使用方法也很简单: # subprocess 使用方法 subprocess.call...("ls") # 执行ls命令 # os 使用方法 # 使用system模块执行linux命令时,如果执行的命令没有返回值res的值是256 # 如果执行的命令有返回值且成功执行,返回值是0 res...返回值是类文件对象,获取结果要采用read()或者readlines() val = os.popen('ls').read() # 执行结果包含在val 方案二:脚本远程执行命令 Python...ssh_fd ): _ssh_fd.close() 方案三:使用SecureCRT脚本 该方法参见此前的博文:SecureCRT 下 Python 脚本编写 参考文献 Python学习总结 06

    7.3K20

    python实现主机批量管理

    日常的运维工作批量对主机的是很常见的,市面上也有许多主机批量管理的软件,但有时候这些软件并不能完全的满足我们的需求。...python刚好提供了关于主机批量管理的模块,今天就让我们来看看如何利用python实现主机批量管理 python提供主机批量管理的模块主要有三个paramiko、fabric与pexpect,今天我们主要说的是...paramiko模块paramiko模块是第三方模块 安装:pip install paramiko或者yum install python-paramiko如果都安装失败的话可以使用源码安装 源码包下载地址...:https://github.com/paramiko/paramiko/archive/master.zip 常用操作: ssh = paramiko.SSHClient() //实例化,ssh会话类...()                         //关闭连接 上传、下载: get_put = paramiko.Transport((ip,port)) //服务器ip端口(使用SFTP时使用

    1.4K20

    Python 远程控制模块 paramiko 问题解决记录

    导语 生产环境中使用paramikoSSH远程控制时,发现会有部分机器报Error reading SSH protocol banner错误,尝试使用ssh命令连接此机器,只是卡半天,最终还是能够正常登陆...最近一直做运维发布平台,底层命令行、文件通道主要基于paramiko模块使用过程遇到各种各样的问题,本文主要用于收集问题及解决记录,以备后续使用。...The issue was raised before but has not been solved 意思是,paramiko使用前,先import grequests,就能解决问题。...二、paramiko远程执行后台脚本“阻塞”问题 我写的远程命令通道上线之后,发现在远程脚本后台再执行另一个脚本,通道会一直等待后台脚本执行完成才会返回,有时甚至会僵死。...1、复现过程如下: ①、编写测试脚本 脚本1:test.sh #!/bin/bash sleep 30 echo test end exit 0 脚本2:run.sh #!

    17.4K20

    python模块-part2

    模块分为三种: 内置模块 开源模块 自定义模块 一:自定义模块 1.定义模块:即编写具有某一功能的python文件ftp.py,ftp既模块名 ftp.py def get(file_path):     ...方式二: 下载源码 解压源码 进入目录 编译源码    python setup.py build 安装源码    python setup.py install 注:使用源码安装时,需要使用到gcc...sys.path 的某个目录,如: /usr/lib/python2.7/site-packages/ 2.导入模块(同自定义模块方式) 3:paramiko i:下载安装 # pycrypto,由于...# 执行命令 stdin, stdout, stderr = ssh.exec_command("passwd lhf") # 结果放到stdout,如果有错误将放到stderr stdin.write...os模块 用于提供系统级别的操作 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd

    53920

    Python远程控制模块paramiko遇到的问题及解决记录

    最近一直开发自动化运维发布平台,底层命令行、文件通道主要基于 paramiko 模块使用过程遇到各种各样的问题,本文主要用于收集问题及解决记录,以备后续使用。...The issue was raised before but has not been solved 意思是, paramiko 使用前,先 import grequests,就能解决问题。...二、paramiko 远程执行后台脚本“阻塞”问题 我写的远程命令通道上线之后,发现在远程脚本后台再执行另一个脚本,通道会一直等待后台脚本执行完成才会返回,有时甚至会僵死。...1、复现过程如下: ①、编写测试脚本 脚本 1:test.sh #!/bin/bash sleep 30 echo test end exit 0 脚本 2:run.sh #!...所以,这里只要将脚本执行的标准输出重定向到错误输出(1>&2),然后 paramiko 就可以使用 stderr 快速读取远程打屏信息了。

    7.4K80

    Ansible(1)- 简单介绍

    什么是 Ansible 开源部署工具,也是一个自动化运维工具 开发语言:Python Ansible 的特性 模块化部署管理:调用特定的模块,完成特定任务 三个关键模块Paramiko(python...Python SSH(默认已装),agentless(免代理),无需代理不依赖 PKI(无需 SSL) 支持自定义模块:支持任何编程语言编写模块(二次开发) 幂等性:一个任务执行一遍执行 n 遍的结果是一样的...Python 语言编写 C/S架构 模块化配置管理 YAML 脚本编写规范 适合大规模集群部署 Ansible Python 语言编写 无 Client 模块化配置管理 Playbook 脚本编写规范...执行代码单元 python ,一个模块是一个 .py 文件,这里也可以这样理解,每个模块都会有特定的功能 可以通过 task 调用单个模块,也可以通过 playbook 调用多个不同的模块 Ansible...目前有 3000+ 个模块 Tasks 任务 行动单元 可以使用临时命令(ad-hoc)每次执行一个任务 Playbooks 剧本(直译) 保存任务的有序列表,方便可以按顺序重复运行这些任务(复用性

    86430

    python使用paramiko实现ssh的功能详解

    个人认为python的paramiko模块是运维人员必学模块之一,其ssh登录功能是旅行居家必备工具。...paramiko模块提供了ssh及sft进行远程登录服务器执行命令上传下载文件的功能。...() 二、基于用户名密码的 transport 方式登录 方法1是传统的连接服务器、执行命令、关闭的一个操作,有时候需要登录上服务器执行多个操作,比如执行命令、上传/下载文件,方法1则无法实现,可以通过如下方式来操作...通道进行监控, # 当用户终端输入命令后,将命令交给channel通道,这个时候sys.stdin就发生变化,select就可以感知 # channel的发送命令、获取结果过程其实就是一个socket...所以上面的脚本不能在windows运行,只能用于linux。

    17.6K11

    如何使用 Python 脚本自动备份华为路由器交换机的配置?

    本文中,我们将学习如何使用 Python 脚本自动备份华为路由器交换机的配置。我们将了解如何通过 SSH 连接设备、执行备份命令,并将备份保存到本地计算机。...您可以使用以下命令通过 pip 安装 Paramiko: pip install paramiko 确保路由器/交换机支持 SSH执行备份之前,请确保您的华为路由器或交换机已经启用 SSH,并且您具有正确的...编写 Python 脚本 现在,让我们开始编写 Python 脚本来自动备份华为路由器交换机的配置。...导入所需的库 脚本的开头,导入所需的 Python 库: import paramiko import time 创建 SSH 连接 使用 Paramiko 库,创建一个 SSH 连接对象并建立连接...通过使用 Paramiko 库建立 SSH 连接执行命令,我们能够轻松地实现自动备份功能。 实际应用,您可以根据需求进一步扩展脚本,例如添加日志记录、定时备份等功能。

    84920
    领券