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

不到200行代码,使用python写一个超简单的跳板机工具

toc 在日常工作中,少不了需要上服务器执行一些操作或者命令,即使在现在云时代,但是一旦出现问题,还是需要上机排查,所以写了一个小小的跳板机工具 在写这个小工具之前,我就在想一定要非常简单,足够简单,所以这里用了不到...简单介绍一下这个模块: pexpect 是 expect 的一个 python 实现,用来进行人机交互,比如执行某一段程序时要求输入用户名和密码,或者是 yes/no 这种情况时,使用 pexpect...pexpect 的使用范围很广,可以用来实现与 ssh、ftp 、telnet 等程序的自动交互 1.1 使用方式 pexpect 的使用基本上分为三个步骤: 首先用 spawn 来执行一条命令或者一段程序.../tmp') 但是当包含一些特殊字符时(>, |, or *),就必须启动一个 shell 来执行了,例如: child = pexpect.spawn('/bin/bash -c "ls -l |...LOG > logs.txt' child = pexpect.spawn('/bin/bash', ['-c', shell_cmd]) child.expect(pexpect.EOF) args

1.2K00

python使用pexpect实现ftp的操作

比如我们可以模拟一个FTP登录时的所有交互,包括输入主机地址、用户名、密码,还有对文件上传下载操作等等,若出现异常,我们也可以进行自动化处理。...Pexpect的安装 可以使用pip安装 pip install pexpect 也可以使用easy_install easy_install pexpect 本菜鸡在win7下使用pip安装的时候抛出好多异常...组件简介 1. spawn类 spanw是pexpect的主要接口,功能就是启动和控制子应用程序。...spawn()中可以是系统中的命令,但是不会解析shell命令中的元字符,包括重定向“>”,管道符“|”或者通配符“*”,但是我们可以将含有这三个特殊元字符的命令作为/bin/bash的参数进行调用,例如...(‘/bin/bash’,[‘-c’,command]) she.expect(pexpect.EOF) (1)expect方法:expect定义了子程序输出的匹配规则。

2.3K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    不到200行代码,使用python写一个超简单的跳板机工具

    toc 在日常工作中,少不了需要上服务器执行一些操作或者命令,即使在现在云时代,但是一旦出现问题,还是需要上机排查,所以写了一个小小的跳板机工具 在写这个小工具之前,我就在想一定要非常简单,足够简单,所以这里用了不到...简单介绍一下这个模块: pexpect 是 expect 的一个 python 实现,用来进行人机交互,比如执行某一段程序时要求输入用户名和密码,或者是 yes/no 这种情况时,使用 pexpect...pexpect 的使用范围很广,可以用来实现与 ssh、ftp 、telnet 等程序的自动交互 1.1 使用方式 pexpect 的使用基本上分为三个步骤: 首先用 spawn 来执行一条命令或者一段程序.../tmp') 但是当包含一些特殊字符时(>, |, or *),就必须启动一个 shell 来执行了,例如: child = pexpect.spawn('/bin/bash -c "ls -l |...LOG > logs.txt' child = pexpect.spawn('/bin/bash', ['-c', shell_cmd]) child.expect(pexpect.EOF) args

    88000

    python之pexpect实现自动交互

    Pexpect 是 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。...整体来说大致的流程包括: 运行程序 程序要求人的判断和输入 Expect 通过关键字匹配 根据关键字向程序发送符合的字符 基本使用流程 pexpect 的使用说来说去,就是围绕3个关键命令做操作: 首先用...当然 pexpect 不会只有这 3 个方法,实际上还有很多外围的其他方法, spawn() - 执行程序 spawn() 方法用来执行一个程序,它返回这个程序的操作句柄,以后可以通过操作这个句柄来对这个程序进行操作...注意: spawn() ,或者说 pexpect 并不会转译任何特殊字符 比如 | * 字符在Linux的shell中有特殊含义,但是在 pexpect 中不会转译它们,如果在 linux 系统中想使用这些符号的正确含义就必须加上...shell 来运行,这是很容易犯的一个错误。

    2.1K00

    ansible生产环境使用场景(五):splunk客户端批量安装

    ;第二步是进入到对应目录,然后新建(修改)配置文件;第三步是执行‘splunk add forward-server’命令,将客户端注册到服务端,此时会有交互窗口,会让输入用户名密码信息;第四步是运行程序并设置为开机自启动...二、准备工作 1.python的pexpect模块安装 由于会使用到ansible的expect模块,该模块运行时需要调用python的pexpect模块,先安装python的pexpect模块 [root...shell: "cd /root/pexpect-4.8.0;python ....执行逻辑:将ansible服务器的两个安装包通过unarchive模块解压并传到splunk客户端,然后使用shell模块运行python命令安装。...在splunk客户端运行导入命令,如能正确导入pexpect模块,则代表安装成功。

    2.3K20

    Python编写渗透工具学习笔记二 | 0x03用python构建ssh僵尸网络

    0x03用python构建ssh僵尸网络 1用pxssh暴力破解ssh密码 因为默认情况下只有linux有ssh服务,所以此脚本只适用于在linux下使用 靶机 10.10.10.128 kali64...攻击机 10.10.10.134 kali2 先要在攻击机上安装好pexpect模块,注意pxssh是pexpect的一个子类,所以需要这样引入(网上会有很多直接 import pxssh的,感觉这样是错误的...,又下载不了pxssh模块,后来才知道原来pxssh是pexpect的一个子类,只需要下载pexpect模块即可) Kali下下载pexpect模块的方法: 1、安装easy_install工具 wget...Pexpect 脚本利用演示 先要在kali64中开启ssh服务 service ssh start ?...,确保一次只有一个线程在调用该资源, 为了解决“多线程执行的不安全性”的问题,防止程序在执行了"某个线程 的一半的时候就暂停,转而去执行其他的线程"的情况的发生,这是多线程占用一个公共对象时的情况。

    1.7K70

    Python编写渗透工具学习笔记二

    1 用pxssh暴力破解ssh密码 因为默认情况下只有linux有ssh服务,所以此脚本只适用于在linux下使用 靶机 10.10.10.128 kali64 攻击机 10.10.10.134 kali2...先要在攻击机上安装好pexpect模块,注意pxssh是pexpect的一个子类,所以需要这样引入(网上会有很多直接 import pxssh的,感觉这样是错误的,反正我是不行,不知道别人怎么做的)应该这样去导入...pxssh是pexpect的一个子类,只需要下载pexpect模块即可) Kali下下载pexpect模块的方法: 1、安装easy_install工具 wget http://peak.telecommunity.com...,确保一次只有一个线程在调用该资源, 为了解决“多线程执行的不安全性”的问题,防止程序在执行了"某个线程 的一半的时候就暂停,转而去执行其他的线程"的情况的发生,这是多线程占用一个公共对象时的情况。...可使用threading的RLock类(重入锁)来解决部分死锁的问题 下期 预告 0x04编写程序分析流量检测ddos攻击

    1.2K60

    Python模块之pexpect

    pexpect是一个用来启动子程序并对其进行自动控制的 Python 模块。...pexpect 可以用来和像 ssh、passwd、telnet 、rsync等命令行程序进行自动交互 下面是我用pexpect写的一个脚本,是用来执行远程主机命令,脚本是自动交互输入远程主机的密码的... """rsync -azv root@%s:%s %s""" % (hostname,sfile,dfile)         print cmd                  #下面是自动交互程序... "Done" #测试程序 if __name__ == "__main__":     rsync('command.log.2015-07-13') 以上脚本是同步文件,也可以修改下执行远程命令。...大多数的自动化运维工具在批量管理主机上也是大致相似的原理,所以可以根据自己的需要实现自己的远程管理工具 上面的脚本也可以实现多线程运行,这个就需要大家自己探索了,我这里已实现。

    59930

    专题 | Python编写渗透工具学习笔记一

    目录&基础知识 0x00 Python编程中一些模块的简单介绍(基础知识) 0x01web目录扫描程序 --脚本代码的实现和分析 --优化脚本 0x02实现一个反弹shell ----脚本演示--脚本分析...----拓:简单实现netcat的脚本--基础知识补充--详细分析脚本执行流程 0x03用多线程扫描某一网段中存活的主机 ----脚本利用演示+实现思路分析 ----基础知识补充 0x04nmap实现端口扫描...实现键盘记录器 ----脚本分析 0x08字典生成程序 ----基础知识--脚本分析 0x00 Python编程中一些模块的简单介绍(基础知识) requests--请求url常用,可用于爬虫 跟这个相近的还有一个...Requests,re,beautifulsoup常用于网络爬虫 PIL pytesser opencv 一些跟图像处理有关的模块 Queue--可以理解成是一种队列的数据结构 Threading--多线程编程相关的模块...Socket--套接字相关的模块,常用于建立tcp,udp这些连接 Time---跟时间有关的模块 Pexpect,pxssh模块--可用于爆破ssh密码 IPy--跟IP处理有关的模块 Python-nmap

    1.6K70

    Python运维中20个常用的库和模块

    9、rrdtool:用于跟踪对象的变化,生成这些变化的走走势图 10、scapy(http://www.wecdev.org/projects/scapy/)是一个强大的交互式数据包处理程序,它能够对数据包进行伪造或解包...12、pexpect:可以理解成Linux下expect的Python封装,通过pexpect我们可以实现对ssh,ftp,passwd,telnet等命令行进行自动交互,而无需人工干涉来达到自动化的目的...相对于Pexpect,封装的层次更高,更贴近SSH协议的功能,官网地址:http://paramiko.org(依赖:Crypto,Ecdsa,Python开发包python-devel) 14、fabric...是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括命令执行,文件上传,下载及完整执行日志输出等功能。...Fabric在paramiko的基础上做了更高一层的封装,操作起来更加简单。

    1.3K31

    Python运维中20个常用的库和模块

    9、rrdtool:用于跟踪对象的变化,生成这些变化的走走势图 10、scapy(http://www.wecdev.org/projects/scapy/)是一个强大的交互式数据包处理程序,它能够对数据包进行伪造或解包...12、pexpect:可以理解成Linux下expect的Python封装,通过pexpect我们可以实现对ssh,ftp,passwd,telnet等命令行进行自动交互,而无需人工干涉来达到自动化的目的...相对于Pexpect,封装的层次更高,更贴近SSH协议的功能,官网地址:http://paramiko.org(依赖:Crypto,Ecdsa,Python开发包python-devel) 14、fabric...是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括命令执行,文件上传,下载及完整执行日志输出等功能。...Fabric在paramiko的基础上做了更高一层的封装,操作起来更加简单。

    3.4K70

    Linux信号处理机制

    严格说来,内核也设有上限,挂起信号的个数也不能无限制地增大,因此只能说,在一定范围之内,可靠信号不会被丢弃。 信号未决状态是指 从生成信号到信息处理逻辑执行的这段时间。...常见的Linux信号如下(可以通过命令kill -l查看): SIGHUP 1 终端挂起或控制进程终止。当用户退出Shell时,由该进程启动的所有进程都会收到这个信号,默认动作为终止进程。...当用户按下或组合键时,用户终端向正在运行中的由该终端启动的程序发出此信号。默认动作为退出程序。 SIGFPE 8 发生致命的运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为0等所有的算法错误。...SIGTERM 15 程序结束信号,可以由 kill 命令产生。与SIGKILL不同的是,SIGTERM 信号可以被阻塞和终止,以便程序在退出前可以保存工作或清理临时文件等。...信号与线程 目前进程大都是多线程的,如果向某个多线程的进程发信号,到底由哪个线程来处理呢?

    3.4K21

    如何连接不断生成和使用数据的 asyncio.coroutines?

    在使用 asyncio 时,连接不断生成和使用数据的多个协程是常见需求。下面就是我在实际操作中遇到的问题以及解决方法可以供大家参考,有问题的也可以指正。...1、问题背景使用 Python 3.4 的 asyncio 模块时,可能会遇到需要连接不断生成和使用数据的问题。...例如,您可能想要创建一个程序来定期报告从 subprocess 接收到的数字的总和,同时不会阻止对 subprocess 的读取。...当您不必关心丢失一些事件时,可以使用它。...当您绝对想响应每个事件时,即使您的使用者落在后面(在时间上),也可以使用它。请注意,如果您限制队列的大小,当您的消费者足够慢时,您的生产者最终会阻塞。

    11410

    09 . Python3之常用模块

    在第一次导入某个模块时(比如test_module1),会先检查该模块是否已经被加载到内存中(当前执行文件的名称空间对应的内存),如果有则直接引用(python解释器启动时会加载一些模块到内存中,可以用...邮件客户端软件在发邮件时,会让你先配置SMTP服务器,也就是你要发到哪个MTA上。...pexpect用来启动子程序,使用正则表达式对程序输出做出特定响应以此实现与其交互的Python模块....spawn类 启动子程序,有丰富的方法实现对子程序的控制 类的实例化 In [2]: ssh_k=pexpect.spawn('ssh root@39.108.140.0 -p22') In [...port="", user="", host="", passwd=""): '''函数: 用于实现pexpect实现shell的自动化密码登录''' # print('ssh -p

    2.1K50

    一文快速了解进程、线程与协程

    不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。此外,一个线程的内存在MB级别,而协程只需要KB级别。...影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。 执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。...一般在shell中操作,进程获取信号进行处理,一共有64种信号,在shell中输入 kill -l 可查阅 7.套接字(socket) 套接字(有的时候被译为插座)也是一种进程间通信机制,与其他通信机制不同的是...能够让协程在事件未发生之前挂起,等待事件发生后被调度并处理,从而有效让出CPU时间。 能够在消息中附带相应的数据。...而进入阻塞可以看成是一个主动的行为(eg.进程I/O时,进程在等待I/O设备完成时,进程主动进入阻塞状态,I/O完成,进程被激活) 挂起态可以分为下面两种: 阻塞挂起状态:进程在外存(磁盘)并等待某个事件的出现

    15.3K62

    面试总结-操作系统

    一个程序不必连续存放。便于改变程序占用空间的大小(主要指随着程序运行,动态生成的数据增多,所要求的地址空间相应增长)。 缺点:无论数据有多少,都只能按照页面大小分配,容易产生内部碎片。...在为某个段分配物理内存时,可以采用首先适配法、下次适配法、最佳适配法等方法。在回收某个段所占用的空间时,要注意将收回的空间与其相邻的空间合并。...多线程中栈与堆是公有的还是私有的 一般来说栈是私有的,堆是公有的。 但是在多线程中,可以为特定的线程创建私有的堆。 进程是资源分配的最小单位,线程是CPU调度的最小单位 进程是资源分配的基本单位。...在多线程OS中,进程不是一个可执行的实体。 ?...->确定运行级别:运行这些开机启动的程序。->加载开机启动程序->用户登录->进入 login shell->打开 non-login shell ? Linux 的启动流程-阮一峰

    92030

    python 学习笔记day10-pyt

    1.# bash chdir.sh (fork,chdir.sh 可以没有执行权限,程序在子进程中执行,执行结束子shell被销毁) 2.# ..../chdir.sh(fork,chdir.sh必须要有执行权限,程序在子进程中执行,执行结束子shell被销毁) 3.# . chdir.sh(当前进程执行脚本,没有fork子进程) 4.# source...    多线程工作原理         多线程的动机             在多线程(MT)编程出现之前,电脑程序的运行由一个执行序列组成,执行序列按顺序在主机的中央处理器(CPU)中运行             ...无论是任务本身要求顺序执行还是整个程序是由多个子任务组成,程序都是按这种方式执行的             即使子任务相互独立,互相无关(即,一个子任务的结果不影响其他子任务的结果)时也是这样             ...直接退出     # 一般在服务器中设置这个选项,一旦服务器程序中断,则和客户端的连接也一并中断了     t.start() 多线程tcp 时间戳服务器 #!

    81830
    领券