前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python soscket监控系统

python soscket监控系统

作者头像
py3study
发布2020-01-06 13:14:01
4800
发布2020-01-06 13:14:01
举报
文章被收录于专栏:python3python3

自己写的监控服务,想监控windows ,所以用python写了一个服务,用于执行系统命令

用python 3写的,2的话需要修改。

server端,也就是被监控端

import socket import sys,os host = '0.0.0.0' port = int(sys.argv[1])

#这里写入可以连接的客户端地址 trust = '127.0.0.1,192.168.1.31' s = None def conn():   for res in socket.getaddrinfo(host,port,socket.AF_UNSPEC,socket.SOCK_STREAM,0,socket.AI_PASSIVE):     af,socktype,proto,canonname,sa = res     try:       s = socket.socket(af,socktype,proto)     except OSError as msg:       s = None       continue     try:       s.bind(sa)       s.listen(1)     except OSError as msg:       s.close()       s = None       continue     break   if s is None:     print('could not open socket')     sys.exit(1)   conn,addr = s.accept()   error = 'ok'   if str(addr[0]) not in str(trust):     error = 'error'   print('Connected by',addr)   while True:     conn.settimeout(5)     if error != 'error':       data = conn.recv(102400)       if not data:break       data = data.decode(encoding='utf-8',errors='strict')       comm = str(data)+' '+'2>&1'       content = os.popen(comm).read()       content = content.encode(encoding='utf-8',errors='strict')       conn.send(content)     else:       conn.send(b'not trust address')       break   conn.close() while True:   conn()

客户端,也就是监控服务器使用的

import socket import sys host=sys.argv[1] port = sys.argv[2] s = None o = len(sys.argv) comm = [] for i in range(3,o):         comm.append(sys.argv[i]) for res in socket.getaddrinfo(host,port,socket.AF_UNSPEC,socket.SOCK_STREAM):         af,socktype,proto,canonname,sa = res         try:                 s = socket.socket(af,socktype,proto)         except OSError as msg:                 s = None                 continue         try:                 s.connect(sa)         except OSError as msg:                 s.close()                 s = None                 continue         break if s is None:         print("could not opensocket")         sys.exit(1) comm = ''.join(comm) comm = comm.replace('[]',' ') comm = comm.encode(encoding='utf-8',errors='strict') s.sendall(comm) data = s.recv(102400) print(repr(data)) s.close() sys.exit(0)

使用方法:

服务端启动服务

python server.pyw 8765

#启动服务,监听8765端口

客户端,也就是监控服务器使用的脚本

python client.pyw  127.0.0.1 8765 ipcofing

连接127.0.0.1的8765端口,执行ipconfig命令,

python client.pyw  127.0.0.1 8765 ipcofing[]/all

如果带参数的话,空格使用[]代替

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档