天天看点

python soscket监控系统

自己写的监控服务,想监控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

      s.bind(sa)

      s.listen(1)

      s.close()

    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 sys

host=sys.argv[1]

port = sys.argv[2]

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

                s.connect(sa)

                s.close()

        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

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

继续阅读