Python脚本:向服务器报告IP

服务器端脚本,监听某个端口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# -*- coding: utf-8 -*-

import logging
import socket

BUFF_SIZE = 2048

LOG_FILENAME = "record_ip.log" # 日志文件名
MSG = b'Hello World'
ADDRESS = ('127.0.0.1', 2134) # 这里的IP应该填外网的

# 配置日志输出文件及级别
FORMAT = '%(asctime)s::%(levelname)s::%(message)s'
logging.basicConfig(filename=LOG_FILENAME, level=logging.INFO, format=FORMAT, filemode='a')

# 日志同时输出到控制台
console = logging.StreamHandler()
console.setLevel(logging.INFO)
console.setFormatter(logging.Formatter(FORMAT))
logging.getLogger('').addHandler(console)

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(ADDRESS)

while True:
data, addr = s.recvfrom(BUFF_SIZE)
if data == MSG:
logging.info('IP: %s' % addr[0])

客户端每隔一段时间向服务器发送消息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# -*- coding: utf-8 -*-

import socket
import time

TIME_DELAY = 24 * 3600 # 每天报告一次
MSG = b'Hello World'
SERV_ADDR = ('127.0.0.1', 2134) # 这里IP填服务器的

while True:
time.sleep(TIME_DELAY)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(MSG, SERV_ADDR)
s.close()