我希望其中一台机器有一个正在运行的远程控制警报,可以由任何远程机器触发。更确切地说
- 机器A正在后台运行服务
- 任何远程机器 B 都可以向机器 A 发送数据包来触发警报(称为 的命令
alarm
)
你建议如何做?
我会用nc
:
机器A上的服务:
nc -l 1111; alarm
机器 B 触发警报
nc <IP of machine A> 1111
我还可以写一些 python 来打开套接字......
答案1
考虑一下这个Python3
例子。
服务器A:
#!/usr/bin/env python3
# coding=utf8
from subprocess import check_call
from xmlrpc.server import SimpleXMLRPCServer
from xmlrpc.server import SimpleXMLRPCRequestHandler
# Restrict to a particular path
class RequestHandler(SimpleXMLRPCRequestHandler):
rpc_paths = ('/JRK75WAS5GMOHA9WV8GA48CJ3SG7CHXL',)
# Create server
server = SimpleXMLRPCServer(
('127.0.0.1', 8888),
requestHandler=RequestHandler)
# Register your function
server.register_function(check_call, 'call')
# Run the server's main loop
server.serve_forever()
服务器B:
#!/usr/bin/env python3
# coding=utf8
import xmlrpc.client
host = '127.0.0.1'
port = 8888
path = 'JRK75WAS5GMOHA9WV8GA48CJ3SG7CHXL'
# Create client
s = xmlrpc.client.ServerProxy('http://{}:{}/{}'.format(host, port, path))
# Call your function on the remote server
s.call(['alarm'])