# coding=utf-8

import threading
import paramiko
import os
import time
import xlrd
import xlwt
import 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()

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

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

    前言 由于工作原因,需要用到今日头条的Marketing API做一些广告投放的定制化开发.然后看现在网上也没多少关于头条Marketing API的文章,于是便就有了该篇文章. 头条Marketin ...

  2. 懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法

    在开发的过程中,我们为了节约时间,往往会将大量重复机械的代码封装,考虑代码的复用性,这样我们可以节约很多时间来做别的事情.最近跳槽到一节webform开发的公司,主要是开发自己公司用的ERP.开始因为 ...

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

    一.简介 nali,名字取自中文“哪里”的拼音.nali包含一组命令行程序,其主要功能就是把一些网络工具的输出的IP字符串,附加上地理位置信息(使用纯真数据库QQWry.Dat).例如74.125.1 ...

  4. Unity3D ——强大的跨平台3D游戏开发工具(三)

    第四章 为地形添加水源.水流以及水下的模糊效果 制作好了地形的各种效果,接下来我们给场景添加一些水效果,使场景更加丰富. 第一步:添加水面 由于我在上一次的地形创作中就已经在山峰之间制作了一块洼地,它 ...

  5. 迅雷VIP帐号获取小工具

    自己写的迅雷vip帐号获取工具,主要是熟悉一下正则表达式 下载地址: 迅雷VIP获取工具 另附vip防踢补丁,不能使用最新迅雷,我使用的是迅雷尊享版2.0.12.258,使用了一段时间,至少没被踢出来 ...

  6. 如何为你的美术妹子做Unity的小工具(三)

    绘制脚本组件监视面板的内容 我们写了一个脚本Test using UnityEngine; using System.Collections; using System.Collections.Gen ...

  7. FuzzScanner 信息收集小工具

    前言: 该工具集成了各种大牛的工具,比如子域名发现,目录扫描,nmap端口扫描,c段地址查询,端口指纹,以及waf查询 00X1: 安装不推荐git安装,首先直接githup脱下来:git clone ...

  8. phpexcel获取excel表格内容

    excel表格式: 代码: $objPHPExcel=PHPExcel_IOFactory::load($excelFilePath);//$file_url即Excel文件的路径 $sheet=$o ...

  9. 小技巧之“将Text文件中的数据导入到Excel中,这里空格为分割符为例”

    1.使用场景 将数据以文本导出后,想录入到Excel中,的简便方案, 起因:对于Excel的导出,Text导出明显会更方便些 2.将Text文件中的数据导入到Excel中,这里空格为分割符为例的步骤 ...

随机推荐

  1. zabbix图形刷新延迟解决

    环境: 服务端    ip :192.168.1.204       hostname:www.test.com 服务端    ip :192.168.1.206       hostname:www ...

  2. 【转】WEB技术发展简史

    [转]WEB技术发展简史 一.Web技术发展的第一阶段——静态文档 第一阶段的Web,主要是用于静态Web页面的浏览.用户使用客户机端的Web浏览器,可以访问Internet上各个Web站点,在每一个 ...

  3. Scratch少儿编程系列:(十)系列总结及后续计划

    一.系列文章的来由 本篇为该系列文章的一个简单总结, 从初次接触Scratch开始,在写本系列文章过程中,一边读书,一边通过例子做练习. 技术实现,对于我跟人来说,没有什么难度. 我相信,对于一个初次 ...

  4. #Java学习之路——基础阶段二(第十四篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  5. mysql默认的存储引擎是什么?它们的区别有哪些?mysql中索引有哪些?

    1.mysql默认引擎 mysql-5.1版本之前默认引擎是MyISAM,之后是innoDB 2.关系 MyISAM是非集聚引擎,支持全文索引;不支持事务;它是表级锁;会保存表的具体行数. innoD ...

  6. redis主从+哨兵模式(借鉴)

    三台机器分布 192.168.189.129  //  master的角色 192.168.189.130  //  slave1的角色 192.168.189.131  //  salve2的角色 ...

  7. Java实现龟兔赛跑

    闲极无聊,加上翻手机看到龟兔赛跑的词语,想到了可以通过java起两个线程来实现龟兔赛跑的实现. 代码实现其实很简单: 首先是乌龟类: 然后是兔子类: 最后是赛跑类: 接下里让我们看一下输出结果吧: 乌 ...

  8. 實現QQ第三方登錄

    <?php // 写几个函数,分别用于获取code,token,openid,用户信息 // 跳转到QQ授权登录页面 function code(){ $response_type='code' ...

  9. 内核中likely和unlikely宏定义

    在内核代码中经常会看到unlikely和likely的踪影.他们实际上是定义在 linux/compiler.h 中的两个宏. #define likely(x)    __builtin_expec ...

  10. Django 前端通过json 取出后端数据

    Django 前端通过json 取出后端数据 前端通过json 取出后端数据 步骤1:后台数据通过 JSON 序列化成字符串a 注意:1.json是1个字符串 ​ 2.通过json.dumps('xx ...