web-dev-qa-db-ja.com

リモコンアラーム

マシンの1つに、任意のリモートマシンでトリガーできるリモートコントロールアラームを実行させたい。より正確に

  • マシンAはバックグラウンドでサービスを実行しています
  • リモートマシンBは、マシンAにパケットを送信してアラームをトリガーできます(alarmというコマンド)。

どのようにそれを行うことを提案しますか?

ncを使用します:

  • マシンAでのサービス:

    nc -l 1111; alarm
    
  • マシンBはでアラームをトリガーします

    nc <IP of machine A> 1111
    

ソケットを開くためにpythonを書くこともできます...

3
user123456

このことを考慮 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'])
1
NarūnasK