Alarme de controle remoto

3

Eu quero que uma máquina tenha um alarme de controle remoto em execução, que pode ser acionado por qualquer máquina remota. Mais precisamente

  • A máquina A está executando o serviço em segundo plano
  • Qualquer máquina remota B pode enviar um pacote para a máquina A para disparar o alarme (um comando chamado alarm )

Como você sugeriria fazer isso?

Eu usaria nc :

  • Serviço na máquina A:

    nc -l 1111; alarm
    
  • A máquina B dispara o alarme com

    nc <IP of machine A> 1111
    

Eu também posso escrever algum python para abrir um socket ...

    
por user123456 08.03.2017 / 10:10

1 resposta

2

Considere este exemplo de Python3 .

Servidor 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()

Servidor 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'])
    
por 08.03.2017 / 16:05