Networking
遙控報警
我希望其中一台機器執行遠端控制警報,可以由任何遠端機器觸發。更確切地說
- 機器 A 正在後台執行服務
- 任何遠端機器 B 都可以向機器 A 發送數據包以觸發警報(命令稱為
alarm
)你會建議怎麼做?
我會使用
nc
:
- 機器 A 上的服務:
nc -l 1111; alarm
- 機器 B 觸發警報
nc <IP of machine A> 1111
我也可以寫一些python來打開一個套接字……
考慮這個
Python3
例子。伺服器甲:
#!/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'])