吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2763|回复: 12
收起左侧

[Python 转载] IP在线、自动生成掉线日志、自动智能弹窗工具插件

  [复制链接]
hub1314 发表于 2022-5-14 09:02
公司做了一个FMCS(厂务自控管理系统)项目,在建设运维期间经学有设备通讯不上,但是又没有好的方式检测设备是否是人为故障还是网线物理故障。在wincc上好像也不容易做设备的掉线检测,于是答应同事自己给他们做一个设备是否在局域网内在线存活的工具。可以当做一个小工具,也可以作为Wincc开发调用的外部插件来使用。当时有1000多台各类设备,检测一遍用了不到20s。下面具体介绍一下这个软件,也把它分享出来,可能工作中很多朋友有机会用到。
image.png
具体操​作步骤:
【检测功能】
一、先从其它地方复制\输入要检测的IP到文档“待检测IP.txt”然后保存。
image.png
二、双击AliveIP_V1.0.exe可执行软件,运行软件。会有控制台弹出检测IP的过程,然后在当前文件夹下生成一个"掉线IP.txt"文档。
image.png
三、查年生成的“掉线IP.txt”文本文件。
image.png
【报警功能】
三、如果想在电脑或者Wincc上循环启动报警,可参考结合另外一个软件弹窗报警插件ReadLinesCountAndNotice.exe。
(思路一:用电脑计划任务程序周期运行这两个软件。思路2:在Wincc中用全局脚本周期调用这两个软件)

四、通过双击ReadLinesCountAndNotice.exe软件,运行报警弹窗程序,可手动报警查看效果。
image.png

最后奉上源码,python3开发
检测功能 如下==》
import threading
import subprocess
import time
import os
from queue import Queue
start_time=time.time()
#删除指定文件
if os.path.exists('掉线IP.txt'):
    os.remove('掉线IP.txt')
#定义工作线程
WORD_THREAD=50
#定义IP列表
IPs=[]
#将需要ping 的ip加入队列
IP_QUEUE = Queue()
# for i in range(1,5):
#     IP_QUEUE.put('192.168.1.'+str(i))
# for j in range(1,255):
#     IP_QUEUE.put('192.168.2.'+str(j))

# file1= open('待检测IP.txt','r',encoding='utf-8') #打开要去掉空行的文件
# file2 =open('待检测IP2.txt','w',encoding='utf-8') #生成没有空行的文件
# for line in file1.readlines():
#     if line == '\n':
#         line=line.strip('\n')
#     file2.write(line)
# file1.close()
# file2.close()

f=open('待检测IP.txt',encoding='utf-8')
lines=f.readlines()
for line in lines:
    if line.isspace():
        continue
    else:
        line=line.replace("\n","")
        #line =line.replace("\t","")
        IPs.append(line)
for x in IPs:
    #print(x)
    IP_QUEUE.put(x)
# with open ('待检测IP.txt') as file:
#     for myline in file.readlines():
#         if myline.isspace:
#             continue
#         else:

#             print(myline)
        #print(myline,end='') #end=""
#定义一个执行ping 的函数
def ping_ip():
    while not IP_QUEUE.empty():
        ip=IP_QUEUE.get()
        res =subprocess.call('ping -n 1 -w 5 %s' %ip,stdout=subprocess.PIPE) #linux系统将'gn'替换成'-c'
        #运行结果
        print(ip,True if res ==0 else False)
        if res !=0 :
            with open('掉线IP.txt','a') as f:
                f.write(ip+'\n')#进行换行输入f.write(ip+'\n')
if __name__ == '__main__':
    threads=[]   
    for i in range(WORD_THREAD):
        thread=threading.Thread(target=ping_ip)#绑定方法
        thread.start()
        #time.sleep(0.1)
        threads.append(thread)
    for thread in threads:
        thread.join()
    print('程序运行耗时:%s' %(time.time()-start_time))
----------------------------------------------
报警功能,如下==》
import win32api,win32con
count = len(open('掉线IP.txt','rU').readlines())
print(count)
if count>=1:
    win32api.MessageBox(0,'现已发现掉线设备总数:%s(台),请注意结合"掉线IP.txt"文本信息,安排检查现场!' %count,"提醒",win32con.MB_YESNOCANCEL)

总结:小伙伴们可以自己结合实际情况选用,在吾爱论坛成长了很多,终于能不做伸手党,为大家做点事了!2022/5/14

补充:在windows计划任务中执行弹窗,因为我这个弹窗要确认,所以不能在这里面启动。建议做自控的话在WinCC(其它上位机软件)中当作插件来使用。

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
Reer + 1 + 1 热心回复!
风逝998 + 1 + 1 谢谢@Thanks!
话痨司机啊 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

king80129 发表于 2022-5-14 13:56
在哪下载?
sandon 发表于 2022-5-14 14:21
se34218 发表于 2022-5-14 14:41
C哥888 发表于 2022-5-14 15:54
分享在哪里
cn449712926 发表于 2022-5-14 15:58
谢谢分享  过来学习下
chinalihao 发表于 2022-5-14 16:01

谢谢分享~~~~~~

谢谢分享~~~~~~
jinhuiyi521 发表于 2022-5-14 16:17
下载链接在哪里呢
metoo2 发表于 2022-5-14 16:19
链接挂了?
Siady 发表于 2022-5-14 17:16
感谢分享…
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 06:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表