对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中的二维数组的操作方法
May 02 Python
Python判断直线和矩形是否相交的方法
Jul 14 Python
pycharm远程开发项目的实现步骤
Jan 20 Python
Python中dict和set的用法讲解
Mar 28 Python
python傅里叶变换FFT绘制频谱图
Jul 19 Python
python中的itertools的使用详解
Jan 13 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 Python
对Matlab中共轭、转置和共轭装置的区别说明
May 11 Python
python3.7+selenium模拟淘宝登录功能的实现
May 26 Python
Python random模块的使用示例
Oct 10 Python
python网络爬虫实现发送短信验证码的方法
Feb 25 Python
90行Python代码开发个人云盘应用
Apr 20 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
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
Laravel5.4简单实现app接口Api Token认证方法
2019/08/29 PHP
代码精简的可以实现元素圆角的js函数
2007/07/21 Javascript
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
用js脚本控制asp.net下treeview的NodeCheck的实现代码
2010/03/02 Javascript
jquery异步调用页面后台方法‏(asp.net)
2011/03/01 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
javascript与Python快速排序实例对比
2015/08/10 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
[00:56]跨越时空加入战场 全新祈求者身心“失落奇艺侍祭”展示
2019/07/20 DOTA
python计算最小优先级队列代码分享
2013/12/18 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
python实现键盘输入的实操方法
2019/07/16 Python
Python交互式图形编程的实现
2019/07/25 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
英国航空官网:British Airways
2016/09/11 全球购物
医学护理系毕业生求职信
2013/10/01 职场文书
工程预算与管理应届生求职信
2013/10/06 职场文书
日语翻译个人求职的自我评价
2013/10/14 职场文书
标准化管理实施方案
2014/02/25 职场文书
树转促学习心得体会
2014/09/10 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
浅谈python中的多态
2021/06/15 Python
浅谈Python数学建模之数据导入
2021/06/23 Python