跨平台信息获取小工具第三版本(增加了继承、多线程、异常处理模块、excel表格内容剔除空格)

# coding=utf-8

import threadingimport paramikoimport osimport timeimport xlrdimport xlwtimport openpyxl

all_row = []threads = []

class read_excel(object):    def __init__(self, num):        #threading.Thread.__init__(self)        #self.threadID = threadID        self.num = num    def read_excel(self):        filePath = os.path.join(os.getcwd(), ‘D:\浙商银行\IP.xlsx‘)

        wb = openpyxl.load_workbook(filePath)  # 打开excel文件        ws = wb[‘Sheet1‘]        res = ws.cell(row=1, column=1).value  # 获取单元格的内容        # print(res)        # print(wb.sheetnames)                    # 显示excel文件的所有sheet名字        print(ws.min_row, ws.max_row, ws.max_column, ws.min_column)  # 单元格的行数、列数; max_row:最大行、max_column:最大列        print(‘*******************************************************‘)        #all_row = []        for row in ws.rows:  # 按行获取单元格(Cell对象) - 生成器            ev_row = []            for cell in row:                value = cell.value                value.strip()                print("value.strip():{0}".format(value.strip()))                ev_row.append(value.strip())            all_row.append(ev_row)            #print("ev_row:", ev_row)            #print(‘*******************************************************‘)            #print(all_row)            #print(len(all_row))        #print("all_row[0][0]:", all_row[0][0])

class acquisition_of_information(read_excel, threading.Thread):

    def __init__(self, num, threadID, name):        #super().__init__(self, num)        threading.Thread.__init__(self)        self.threadID = threadID        self.num = num        print("threadID:{0} name:{1}".format(threadID, name))    def run(self):        # 创建SSHClient实例对象        ssh = paramiko.SSHClient()        # 调用方法,标识没有远程机器的公钥,允许访问        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())        len1 = len(all_row)        print("len1:", len1)        # 连接远程机器 地址端口用户名密码        for num in range(0, len1):            fo = open(all_row[num][0] + ".log", "wb+")            fo.truncate()  # 清空文件内容            all_row[num][0].strip()   #  去除excel表格内容头和尾的空格            print("all_row{0}[0]:{1}".format(num, all_row[num][0].strip()))            all_row[num][1].strip()   #  去除excel表格内容头和尾的空格            print("all_row{0}[1]:{1}".format(num, all_row[num][1].strip()))            all_row[num][2].strip()   #  去除excel表格内容头和尾的空格            print("all_row{0}[2]:{1}".format(num, all_row[num][2].strip()))            try:                ssh.connect(all_row[num][0].strip(), 22, all_row[num][1].strip(), all_row[num][2].strip())            except IOError:                print   ("连接服务器失败,IP:{0}".format(all_row[num][0]))            else:                print   ("连接服务器成功,IP:{0}".format(all_row[num][0]))            print("num:", num)            # 创建目录            stdin, stdout, stderr = ssh.exec_command("ip a | grep 192 | awk ‘{print $2}‘")            fo.write(stdout.read())            str = "***************************" \                  "***************************\n"            str = str.encode()            fo.write(str)            stdin, stdout, stderr = ssh.exec_command("uname -a | grep -i ‘linux‘ | wc -l")            res = stdout.read()            print("res:", res)            if res == b‘1\n‘:                str = "df -Ph\n"                str = str.encode()                fo.write(str)                stdin, stdout, stderr = ssh.exec_command("df -Ph")                fo.write(stdout.read())                str = "***************************" \                      "***************************\n"                str = str.encode()                fo.write(str)            else:                str = "df -Pg\n"                str = str.encode()                fo.write(str)                stdin, stdout, stderr = ssh.exec_command("df -Pg")                fo.write(stdout.read())                str = "***************************" \                      "***************************\n"                str = str.encode()                fo.write(str)            str = "cat .profile\n"            str = str.encode()            fo.write(str)            stdin, stdout, stderr = ssh.exec_command("cd /root && cat .profile")            res, err = stdout.read(), stderr.read()            fo.write(res)            str = "***************************" \                  "***************************\n"            str = str.encode()            fo.write(str)            str = "arp -a\n"            str = str.encode()            fo.write(str)            stdin, stdout, stderr = ssh.exec_command("arp -a")            res, err = stdout.read(), stderr.read()            fo.write(res)            str = "***************************" \                  "***************************\n"            str = str.encode()            fo.write(str)

            str = "netstat -rn\n"            str = str.encode()            fo.write(str)            stdin, stdout, stderr = ssh.exec_command("netstat -rn")            res, err = stdout.read(), stderr.read()            fo.write(res)            str = "***************************" \                  "***************************\n"            str = str.encode()            fo.write(str)

            str = "cat /etc/rc.local\n"            str = str.encode()            fo.write(str)            stdin, stdout, stderr = ssh.exec_command("cat /etc/rc.local")            res, err = stdout.read(), stderr.read()            fo.write(res)            str = "***************************" \                  "***************************\n"            str = str.encode()            fo.write(str)

            str = "cat /etc/hosts\n"            str = str.encode()            fo.write(str)            stdin, stdout, stderr = ssh.exec_command("cat /etc/hosts")            res, err = stdout.read(), stderr.read()            fo.write(res)            str = "***************************" \                  "***************************\n"            str = str.encode()            fo.write(str)

            str = "netstat -an|grep LISTEN*\n"            str = str.encode()            fo.write(str)            stdin, stdout, stderr = ssh.exec_command("netstat -an|grep LISTEN*")            res, err = stdout.read(), stderr.read()            fo.write(res)            str = "***************************" \                  "***************************\n"            str = str.encode()            fo.write(str)

            str = "ps -ef | grep java\n"            str = str.encode()            fo.write(str)            stdin, stdout, stderr = ssh.exec_command("ps -ef | grep java")            res, err = stdout.read(), stderr.read()            fo.write(res)            str = "***************************" \                  "***************************\n"            str = str.encode()            fo.write(str)

            str = "ps -ef | grep zabbix\n"            str = str.encode()            fo.write(str)            stdin, stdout, stderr = ssh.exec_command("ps -ef | grep zabbix")            res, err = stdout.read(), stderr.read()            fo.write(res)            str = "***************************" \                  "***************************\n"            str = str.encode()            fo.write(str)

            str = "ps -ef | grep ctm\n"            str = str.encode()            fo.write(str)            stdin, stdout, stderr = ssh.exec_command("ps -ef | grep ctm")            res, err = stdout.read(), stderr.read()            fo.write(res)            str = "***************************" \                  "***************************\n"            str = str.encode()            fo.write(str)            str = "crontab -l\n"            str = str.encode()            fo.write(str)            stdin, stdout, stderr = ssh.exec_command("crontab -l")            res, err = stdout.read(), stderr.read()            fo.write(res)            str = "--------------------------" \                  "***************************" \                  "***************************" \                  "---------------------------\n"            str = str.encode()            fo.write(str)            ssh.close()            fo.close()            num = num + 2

    def __del___(self, num):        self.num = num

class print_all_row(read_excel, threading.Thread):    def __init__(self, num, threadID, name):        threading.Thread.__init__(self)        self.threadID = threadID        self.num = num        print("print_all_row name:", name)

    def run(self):        print("all_row[0][0]:", all_row[0][0])        print("all_row[0][1]:", all_row[0][1])        print("all_row[0][2]:", all_row[0][2])

def main():    start = time.time()    excel = read_excel(0)    excel.read_excel()    thread1 = acquisition_of_information(0, "Thread-2", "zhouhaiwu")    thread2 = acquisition_of_information(1, "Thread-3", "zhouhaiwu")    thread3 = print_all_row(0, "Thread-4", "zhouhaiwu")    # 开启新线程    #thread1.start()    thread1.start()    thread2.start()    thread3.start()    # 添加线程到线程列表    #threads.append(thread1)    threads.append(thread1)    threads.append(thread2)    threads.append(thread3)    # 等待所有线程完成    for t in threads:        t.join()    print   ("Exiting Main Thread")    end = time.time()    print (str(end))

if __name__ == ‘__main__‘:    main()

原文地址:https://www.cnblogs.com/niaocaizhou/p/11110581.html

时间: 2024-10-11 16:15:50

跨平台信息获取小工具第三版本(增加了继承、多线程、异常处理模块、excel表格内容剔除空格)的相关文章

跨平台信息获取小工具

# coding=utf-8import paramikoimport osimport timeimport xlrdimport xlwtimport openpyxl all_row = [] class read_excel(object): def __init__(self, num): self.num = num self.num = num def read_excel(self): filePath = os.path.join(os.getcwd(), 'D:\浙商银行\I

今日头条Marketing API小工具(.Net Core版本)

前言 由于工作原因,需要用到今日头条的Marketing API做一些广告投放的定制化开发.然后看现在网上也没多少关于头条Marketing API的文章,于是便就有了该篇文章. 头条Marketing API主页地址:https://ad.toutiao.com/openapi/index.html. 头条Marketing API开发文档:https://ad.toutiao.com/openapi/doc/index.html 交互图 典型的OAuth2.0授权流程: 使用步骤 1. 首先

Linux下显示IP地理位置信息的小工具-nali

一.简介 nali,名字取自中文“哪里”的拼音.nali包含一组命令行程序,其主要功能就是把一些网络工具的输出的IP字符串,附加上地理位置信息(使用纯真数据库QQWry.Dat).例如74.125.128.104会变成74.125.128.104[美国 加利福尼亚州山景市谷歌公司].查询是在本地进行,并不会进行联网查询,所以效率方面不会对原始命令产生什么影响. 目前包含以下几个命令: nali nali-dig nali-nslookup nali-traceroute nali-tracepa

迅雷VIP帐号获取小工具

自己写的迅雷vip帐号获取工具,主要是熟悉一下正则表达式 下载地址: 迅雷VIP获取工具 另附vip防踢补丁,不能使用最新迅雷,我使用的是迅雷尊享版2.0.12.258,使用了一段时间,至少没被踢出来过. http://files.cnblogs.com/files/ztsghr/%E8%BF%85%E9%9B%B7%E9%98%B2%E8%B8%A2%E9%98%B2%E6%8C%A4%E9%98%B2%E9%A1%B6%E8%A1%A5%E4%B8%81.zip

七牛上传小工具-Go语言版本

运行环境: Mac os X and Linux 现在当前目录下创建qiniu.json文件: { "AK":"XXX" , "SK":"XXX", "BN":"xx" } package main import ( "encoding/json" "fmt" "io/ioutil" "os" "p

Linux——互联网搜索引擎nbtscan是一个扫描WINDOWS网络NetBIOS信息的小工具

nbtscan :2005年11月23日发布.NBTSCAN身材娇小,简单快速.但只能用于局域网,可以显示IP,主机名,用户名称和MAC地址等等... man nbtscan nbtscan 192.168.1.3/24 nbtscan 192.168.1.3-24 ntbscan -v -s 192.168.1.3/24 ntbscan -v -s 192.168.1.3-24

java 一个日志记录异常信息的小工具

package com.crm.mess.util; /** * * @author liangrui * @2015/1/12 * */ public class ExceptionsLog { public synchronized static String logClzInfo(Exception e) { StringBuffer sb = new StringBuffer(); sb.append(e.getClass() + " " + e.getMessage() +

phpexcel获取excel表格内容

excel表格式: 代码: $objPHPExcel=PHPExcel_IOFactory::load($excelFilePath);//$file_url即Excel文件的路径 $sheet=$objPHPExcel->getSheet(0);//获取第一个工作表 $highestRow=$sheet->getHighestRow();//取得总行数 $highestColumn=$sheet->getHighestColumn(); //取得总列数 $ChangeDatas = [

网站发布助手V1.1 (去年写的简单小工具)

去年在更新网站内容时老是要输入重复的话,所以就写了一个很简单的工具(很菜的). 网站发布助手V1.1(使用快捷键快速输入自定义的文本)    网站发布助手是一个多次复制粘贴工具,能够快速将自己事先定义好的的文本通过快捷键粘贴到想要发布的地方,软件有8个快捷键,分别是F1.F2.F3.F4.数字键1.数字键2.数字键3.数字键4,在软件目录下的st.txt能够自定义要粘贴的内容,由上到下每行分别对应一个相应快捷键.当你每天重复大量相同文本录入的时候本软件可以减轻你的负担,让你快捷的输入文本.