python 通过threading多线程ssh

#!/usr/bin/env python
#coding=utf-8
import paramiko
import time,datetime,threading

def ssh(ip,user,passwd,command):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    try:
        ssh.connect(ip,port=16333,username=user,password=passwd)
    except paramiko.AuthenticationException:
        #print "验证失败,用户名或密码错误."
        return 0
    except:
        #print ‘ip‘,"主机不可达。"
        return 2
    stdin, stdout, stderr = ssh.exec_command(command)
    lines = [line.strip() for line in stdout.readlines()]
    data_include_firstline = "".join(lines)
    data_no_firstline = "".join(lines[1:])
    return data_include_firstline

def sshcmd(src,linerange): 
    i = 0
    for line in open(src):
        i += 1
        if i in range(linerange[0],linerange[1]+1): 
            ip = line.strip()
            user = ‘root‘
            port = 16333
            passwd = ‘123qwe‘
            command = ‘hostname‘
            result = ssh(ip,user,passwd,command)
            if result == 0:
                result = ‘验证失败,用户名或密码错误.‘
            elif result == 2:
                result = ‘主机不可达.‘
            print i,ip,result
def main(num,src):
    global count, mutex
    linesum = sum(1 for line in open(src))
    quotient = linesum/num
    threads = []
    # 创建一个锁
    mutex = threading.Lock()
    # 先创建线程对象
    for k in xrange(1, num+1):
        if k == num:
            linerange = quotient*(k-1)+1,linesum
        else:
            linerange = quotient*(k-1)+1,quotient*k
        threads.append(threading.Thread(target=sshcmd, args=(src,linerange)))
    # 启动所有线程
    for t in threads:
        t.start()
    # 主线程中等待所有子线程退出
    for t in threads:
        t.join()

starttime = datetime.datetime.now() 
if __name__ == ‘__main__‘:
    # 创建10个线程
    main(10,‘ip.txt‘)
endtime = datetime.datetime.now()
print "time span",endtime-starttime

时间: 2024-12-28 12:49:11

python 通过threading多线程ssh的相关文章

python中threading多线程

python中有两个处理多线程的模块thread和threading.其中thread提供了多线程底层支持的模块,以低级原始的发那个是来处理和控制线程,使用起来较为复杂:而threading基于thread进行包装,将线程操作对象化. 最基础的的多线程 我们先看一个最最基础的多线程例子 import threading import time class test(threading.Thread): def __init__(self,name,delay): threading.Thread

python多线程ssh爆破如何实现与防范?

本文和大家分享的主要是python多线程的ssh**与防范相关内容,一起来看看吧,希望对大家学习python多线程有所帮助. 0x01.About 这几天发现朋友的服务器22被人爆了,于是想想,也想去爆别人服务器. 爆弱口令时候写的一个python小脚本,主要功能是实现使用字典多线程**ssh,支持ip表导入,字典数据导入. 主要使用到的是python的paramiko模块和多线程threading模块. 那么,首先要准备的是字典dict.服务器ip表. 东西很简单,主要默认目录如下: |--s

python多线程ssh爆破

python多线程ssh爆破 Python 0x01.About 爆弱口令时候写的一个python小脚本,主要功能是实现使用字典多线程爆破ssh,支持ip表导入,字典数据导入. 主要使用到的是python的paramiko模块和多线程threading模块. 那么,首先要准备的是字典dict.服务器ip表. 东西很简单,主要默认目录如下: |--ssh.scan.py |--/log: sshd |--/dict: ip password ip和password按照一行一个放置. 0x02.Co

python学习笔记(threading多线程)

博主昨天优化了接口框架想着再添加些功能 想到对接口的性能压力测试 在工作过程中之前都是使用的工具 如:loadrunner.jmeter 想着这次准备用python实现对接口的性能压力测试 首先要实现这个功能就要运用到python的threading模块 下面是自己学习摸索出来的代码: 1 #!/usr/bin/env python 2 # -*- coding: utf_8 -*- 3 4 import threading 5 import requests 6 from time impor

threading模块,python下的多线程

一.GIL全局解释器锁 In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython's memory management is not thread-safe. (However, sin

python 远程批量多线程paramiko 和 threading案例

初步理解多线程的好处 这两个例子告诉我们同样的事情,一个用了8s一个用了5s这就是多线程并发执行的好处. paramiko 和 threading 多线程远程执行的基本案例--[[email protected] pythontest]# cat paramiko-threading.py#!/usr/bin/python#coding:utf-8#from settings.py import *import paramikoimport threadingimport timedef tun

Python学习之多线程编程

Threading模块从Python 1.5.2 版开始出现,用于增强底层的多线程模块 thread .Threading 模块让操作多线程变得更简单,并且支持程序同时运行多个操作. 注意,Python开发中的多线程最好用于处理有关 I/O 的操作 ,如从网上下载资源或者从本地读取文件或者目录.如果你要做的是 CPU 密集型操作,那么你需要使用 Python 的 multiprocessing 模块.这样做的原因是,Python 有一个全局解释器锁 (GIL),使得所有子线程都必须运行在同一个主

python中threading模块详解(一)

python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thread模块更高层的API来提供线程的并发性.这些线程并发运行并共享内存. 下面来看threading模块的具体用法: 一.Thread的使用 目标函数可以实例化一个Thread对象,每个Thread对象代表着一个线程,可以通过start()方法,开始运行. 这里对使用多线程并发,和不适用多线程并发做

Python 线程(threading) 进程(multiprocessing)

*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin: 15px 0; } /* HEAD