文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python soscket监控系统

2023-01-31 06:59

关注
自己写的监控服务,想监控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
如果带参数的话,空格使用[]代替
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯