`
这些年
  • 浏览: 401990 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

python 中好玩的命

 
阅读更多

1:输出的是比 i的开平方 小 的最大整数

import math
if __name__ == '__main__':
print int(math.sqrt(48))                          #6

 2:在本地多线程序进行shell,返回结果保存到数组中

# -*- coding:utf-8 -*- 
#!/usr/bin/python 
import paramiko 
import threading 
import logging  
import logging.config 
import sys

logging.config.fileConfig("logging.conf")
logger = logging.getLogger("main")
error_shell=['shutdown','reboot','halt','poweroff','init','kill']  

class MyThread(object):  
    def __init__(self, func_list=None):  
    #所有线程函数的返回值汇总,如果最后为0,说明全部成功  
        self.ret_flag = []  
        self.func_list = func_list  
        self.threads = []  
           
    def set_thread_func_list(self, func_list):  
        """ 
        @note: func_list是一个list,每个元素是一个dict,有func和args两个参数 
        """  
        self.func_list = func_list  
  
   
    def ret_value(self):  
        """ 
        @note: 所有线程函数的返回值之和,如果为0那么表示所有函数执行成功 
        """  
        return self.ret_flag  
  
    def trace_func(self, func, *args, **kwargs):  
        """ 
        @note:替代profile_func,新的跟踪线程返回值的函数,对真正执行的线程函数包一次函数,以获取返回值 
        """  
        ret = func(*args, **kwargs)  
        self.ret_flag.append(ret)   
  
  
  
    def start(self):  
        """ 
        @note: 启动多线程执行,并阻塞到结束 
        """  
        self.threads = []  
        self.ret_flag = []  
        for func_dict in self.func_list:  
            if func_dict["args"]:  
                new_arg_list = []  
                new_arg_list.append(func_dict["func"])  
                for arg in func_dict["args"]:  
                    new_arg_list.append(arg)  
                new_arg_tuple = tuple(new_arg_list)  
                t = threading.Thread(target=self.trace_func, args=new_arg_tuple)  
            else:  
                t = threading.Thread(target=self.trace_func, args=(func_dict["func"],))  
            self.threads.append(t)  
       
        for thread_obj in self.threads:  
            thread_obj.start()  
       
        for thread_obj in self.threads:  
            thread_obj.join()  
 
def ssh2(ip,username,passwd,cmd):
    Information=[];
    try:
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(ip,22,username,passwd,timeout=5)
        for m in cmd:
            if(is_harmful_shell(m)):
                logger.error('not running harmful shell: %s on:%s'%(m,ip))
            else:
                stdin, stdout, stderr = ssh.exec_command(m)
#               stdin.write("Y")   #简单交互,输入 ‘Y’ 
                out = stdout.readlines()
                #屏幕输出
                for o in out:
                    Information.append(o);
                logger.info('Performed on %s machine:'%(ip)+m);
        ssh.close()
        return Information;
    except :
        logger.error( '%s\tError\n'%(ip) +sys.exc_info()[0],sys.exc_info()[1]);

def is_harmful_shell(cmd):
    for m in error_shell:
        if(cmd.lower().find(m.lower())!=-1):
            return True;
    return False;


if __name__=='__main__':
    mt = MyThread() 
    g_func_list = []
    cmd = ['hostname','cat /proc/sys/kernel/random/uuid']#你要执行的命令列表
    username = "root"  #用户名
    passwd = "root"    #密码
    threads = []   #多线程
    print "Begin......"
    for i in range(129,131):
        ip = '192.168.197.'+str(i)
        g_func_list.append({"func":ssh2,"args":(ip,username,passwd,cmd)}) 
    mt.set_thread_func_list(g_func_list)
    mt.start()  
    for k, v in enumerate(mt.ret_value()):
        print k, v


 日志

[loggers]
keys=root,main

[handlers]
keys=consoleHandler,fileHandler

[formatters]
keys=fmt

[logger_root]
level=INFO
handlers=consoleHandler

[logger_main]
level=INFO
qualname=main
handlers=fileHandler

[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=fmt
args=(sys.stdout,)

[handler_fileHandler]
class=logging.handlers.RotatingFileHandler
level=INFO
formatter=fmt
args=('tst.log','a',20000,5,)

[formatter_fmt]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=

 

分享到:
评论

相关推荐

    Python开发好玩的掷骰子游戏_完整项目流程实战_MicroPython-TurnipBit开发板_编程实例详解教程.pdf

    骰子,中国古代民间娱乐用来投掷的博具。骰子通常作为桌上游戏的小道具最常见的是六面骰,它是一个正立方体,上面分别有1-6个孔(或数字),其相对两面的数字之和必为7。中国的骰子习惯在一点和四点漆上红色。...

    超好玩的Python随机点名器

    在Python中,实现随机点名的关键知识点包括: 1. **文件操作**:Python提供了简单易用的文件I/O接口,如`open()`函数用于打开文件,`readline()`或`readlines()`用于读取文件内容。在这个点名器中,程序会读取`name...

    python2爬取4399好玩的小游戏

    转载资源。用python2爬取4399好玩的游戏,值得学习和参考,也可以根据自己的想法改代码。

    python3.10中文使用手册

    * 软关键字:Python 3.10 中引入了软关键字的概念,软关键字是指一些可以在 future 语句中使用的单词。 * 保留的标识符类:Python 中的一些标识符是保留的,例如 `__class__`、`__module__` 等。 字面值 Python 中...

    Python中文操作手册

    4. **异常处理**:Python中的错误和异常处理机制,如`try/except`语句,以及如何自定义异常。 5. **面向对象编程**:类的定义、继承、封装、多态等概念,以及`__init__`、`__del__`等特殊方法的使用。 6. **文件...

    python中文自然语言处理基础与实战

    《Python中文自然语言处理基础与实战》是一本深入浅出的教程,涵盖了使用Python进行NLP工作的各个方面。在本文中,我们将详细探讨该领域的重要概念、工具和技术,并结合实际案例来深化理解。 首先,让我们从Python...

    python中文手册.pdf

    python中文手册,适用于python入门学习,描述python基本使用。

    Python 中英文混排时对齐 Python源码

    Python 中英文混排时对齐 Python源码Python 中英文混排时对齐 Python源码Python 中英文混排时对齐 Python源码Python 中英文混排时对齐 Python源码Python 中英文混排时对齐 Python源码Python 中英文混排时对齐 Python...

    python中文api文档+学习笔记

    这不仅可以帮助用户深入理解Python的语法和API,还可以通过学习笔记了解实际应用中的技巧和经验,对于提升Python技能和解决实际问题非常有帮助。无论你是初学者还是资深开发者,这个资源集合都是值得珍藏和参考的...

    python3.8中文帮助文档 离线CHM版

    4. **异常处理**:Python 使用 try-except-finally 结构来处理程序中的错误,文档中详述了各种内置异常类型及其用法。 5. **标准库**:Python 有一个庞大的标准库,包括字符串操作、文件和I/O、网络通信、数据结构...

    Programming Python 中文第四版

    1. **Python语言基础**:书中详细讲解了Python的基础语法,包括变量、数据类型(如整型、浮点型、字符串、布尔型)、流程控制(条件语句、循环结构)、函数定义和调用,以及异常处理机制。 2. **面向对象编程**:...

    2024最新版python中j-pythonj基础笔记

    2024最新版python中j_pythonj基础笔记2024最新版python中j_pythonj基础笔记2024最新版python中j_pythonj基础笔记2024最新版python中j_pythonj基础笔记2024最新版python中j_pythonj基础笔记2024最新版python中j_...

    Python3.8官方中文API参考手册

    6. **extending.pdf**:扩展Python,讲述了如何使用C或C++编写Python扩展,以及如何将C/C++库集成到Python程序中,是深入学习Python底层原理的重要资料。 7. **using.pdf**:使用Python,可能包含Python的配置、...

    Python 如何批量替换Word文档中的指定内容(包括页眉)Python源码

    Python 如何批量替换Word文档中的指定内容(包括页眉)Python源码Python 如何批量替换Word文档中的指定内容(包括页眉)Python源码Python 如何批量替换Word文档中的指定内容(包括页眉)Python源码Python 如何批量...

    python3.7 官方中文手册文档全套

    2. **字典有序性**:自Python 3.6起,字典就保持插入顺序,而在Python 3.7中,这一特性被正式纳入到语言规范中。这意味着字典现在是有序的容器,这对于需要保持键顺序的场景非常有用。 3. **类型注解(Type ...

    Python面试宝典.pdf

    1. 文件操作:了解Python中文件的读写操作,包括读取jsonline格式的文件。 2. 日期操作:了解Python中日期的操作,包括判断一天是这一年的第几天。 3. 列表操作:了解Python中列表的操作,包括排序、反转、删除重复...

    《Python程序设计》习题与答案-python教材答案.doc

    尽管如此,Python 3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了 尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python 3.x系列的最高版本(目前是Python 3.4.3)。...

    python IDLE shell 中文界面

    在描述中,博主指出他们使用的Python版本是3.8,这意味着这个方法可能适用于Python 3.8版本。 实现IDLE中文界面的步骤如下: 1. 首先,你需要找到一个包含中文语言包的Python安装。这通常可以在Python的国际化版本...

    使用DJANGO框架的PYTHON中的TODO列表.zip

    使用DJANGO框架的PYTHON中的TODO列表使用DJANGO框架的PYTHON中的TODO列表使用DJANGO框架的PYTHON中的TODO列表使用DJANGO框架的PYTHON中的TODO列表使用DJANGO框架的PYTHON中的TODO列表使用DJANGO框架的PYTHON中的TODO...

Global site tag (gtag.js) - Google Analytics