对python多线程SSH登录并发脚本详解


Posted in Python onFebruary 14, 2019

测试系统中有一项记录ssh登录日志,需要对此进行并发压力测试。

于是用多线程进行python并发记录

因为需要安装的一些依赖和模块比较麻烦,脚本完成后再用pyinstaller打成exe包分发给其他测试人员一起使用。

1.脚本编写

# -*- coding: utf-8 -*-
import paramiko
import threading
import time
lt = []
def ssh(a,xh,sp):
 count = 0
 for i in range(0,xh):
  try:
   ssh = paramiko.SSHClient()
   ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
   ssh.connect('ip地址',22,'用户名', '密码')
   ssh.close()
   print u"线程[%s]第[%s]次登录"%(a,i)
   if sp != 0:
    time.sleep(sp)
   count += 1
  except:
   print u"线程异常,已处理"
 lt.append(count)
  
if __name__ == "__main__":
 figlet = '''
   _____ _____ _ 
  | ___| | _ \ | | 
  | |__ | |_| | | | 
  | __| | _ { | | 
  | |  | |_| | | | 
  |_|  |_____/ |_| 
    Code by FBI.
   '''
 print figlet
 print u"认证攻击次数=线程数*每个线程认证攻击次数"
 print u"请输入线程数:"
 xc = raw_input()
 print u"请输入每个线程攻击次数:"
 xh = raw_input()
 print u"请输入每个线程延迟时间(秒),0为不休眠:"
 sp = raw_input()
 try:
  print u"预计总共发送认证攻击%s次"%(int(xc)*int(xh))
  threads = []
  for j in range(int(xc)):
   threads.append(threading.Thread(target=ssh,args=(j,int(xh),int(sp),)))
  for t in threads:
   t.start()
   print t.name
 
  t.join()
 
  print lt
  count = 0
  for count in lt:
   count += count
  print u"程序执行完毕总共发送认证攻击【%s】次" % count
 except ValueError,e:
  print u"因为输入不规范导致程序出现错误,请输入数字"

2.pyinstaller制作exe程序

下载pyinstaller后

在根目录中cmd中执行python setup.py install安装pyinstaller

安装完成后执行命令打成exe文件

python pyinstaller.py -F 文件路径

3.执行效果

如图:

对python多线程SSH登录并发脚本详解

以上这篇对python多线程SSH登录并发脚本详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中使用PIL模块处理图像的教程
Apr 29 Python
Python中字典的基本知识初步介绍
May 21 Python
python3实现全角和半角字符转换的方法示例
Sep 21 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
Jan 11 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
Nov 29 Python
Python单元和文档测试实例详解
Apr 11 Python
Pandas中Series和DataFrame的索引实现
Jun 27 Python
Python+Pyqt实现简单GUI电子时钟
Feb 22 Python
利用python实现短信和电话提醒功能的例子
Aug 08 Python
Python读取文件内容为字符串的方法(多种方法详解)
Mar 04 Python
python db类用法说明
Jul 07 Python
matplotlib基础绘图命令之errorbar的使用
Aug 13 Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 #Python
python 实现selenium断言和验证的方法
Feb 13 #Python
使用Python自动化破解自定义字体混淆信息的方法实例
Feb 13 #Python
python selenium执行所有测试用例并生成报告的方法
Feb 13 #Python
对python_discover方法遍历所有执行的用例详解
Feb 13 #Python
django2.0扩展用户字段示例
Feb 13 #Python
Python查找最长不包含重复字符的子字符串算法示例
Feb 13 #Python
You might like
PHP读取MySQL数据代码
2008/06/05 PHP
php用正则表达式匹配中文实例详解
2013/11/06 PHP
php 伪静态之IIS篇
2014/06/02 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
使用JS 插件qrcode.js生成二维码功能
2017/02/20 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
详解写好JS条件语句的5条守则
2019/02/28 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
Python匹配中文的正则表达式
2016/05/11 Python
Python urls.py的三种配置写法实例详解
2017/04/28 Python
Python 操作文件的基本方法总结
2017/08/10 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
python tkinter组件摆放方式详解
2019/09/16 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
异常和异常类的概念
2014/09/12 面试题
聚网科技C++面试笔试题
2015/09/01 面试题
中文专业毕业生自荐信
2013/10/28 职场文书
上课看小说检讨书
2014/02/22 职场文书
市政工程技术专业自荐书
2014/07/06 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书
Python OpenCV实现图像模板匹配详解
2022/04/07 Python
使用Django框架创建项目
2022/06/10 Python
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL