X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=suanzi-support;h=183f6de6c749a2c08fd78715810668404847e8b1;hb=049dc4e7874fe73c600469542e5826a188dbc03d;hp=41ed9fc07feba7d15ead030fde7f52ef66afc564;hpb=a371c0f6b2d994a074eaeb56a2125cb4c0af85f8;p=remote-debug.git diff --git a/suanzi-support b/suanzi-support index 41ed9fc..183f6de 100755 --- a/suanzi-support +++ b/suanzi-support @@ -7,23 +7,25 @@ from subprocess import call, Popen, PIPE, STDOUT import paho.mqtt.client as mqtt import shlex -import os import random from uuid import getnode as get_mac MQTT_SERVER = 'mqtt.suanzi.ai' MQTT_PORT = 1883 + +# The alive time new ssh session exist. It means if no client connect to this device through ssh tunnel in 5 minutes, +# this new sessin will terminate. ALIVE_TIME = 60 * 5 SSH_SERVER = 'autossh.suanzi.ai' -PORT_RANGE = (20000, 30000) +PORT_RANGE = (20000, 40000) USER = 'autossh' PASSWORD = 'hard2guess' def getAvailablePort(host, ports): while True: port = random.randint(ports[0], ports[1]) - command = 'nc -z -v -w5 ' + host + ' ' + str(port) + command = 'nc -z -v -w3 ' + host + ' ' + str(port) p = Popen(command, shell=True, stdout=PIPE, stderr=STDOUT) pout = p.communicate()[0].strip() if p.returncode == 0: @@ -36,14 +38,12 @@ def getAvailablePort(host, ports): def exec_ssh(port): if port == None: raise Exception('Port not avaliable') - #command = 'sshpass -p' + PASSWORD + ' ssh -o "ServerAliveInterval 30" -o "ServerAliveCountMax 1" -fCNR ' + str(port) +':localhost:22 ' + USER + '@' + SSH_SERVER - command = 'sshpass -p' + PASSWORD + ' ssh -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -fCR ' + str(port) +':localhost:22 ' + USER + '@' + SSH_SERVER + ' sleep ' + str(ALIVE_TIME) + command = 'sshpass -p' + PASSWORD + ' ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile /dev/null" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -fCR ' + str(port) +':localhost:22 ' + USER + '@' + SSH_SERVER + ' sleep ' + str(ALIVE_TIME) print command return call(shlex.split(command), shell=False) def on_connect(client, userdata, flags, rc): - #client.subscribe("rpdzkj-request") client.subscribe(client.id + '-request') print("Connected with result code "+str(rc)) @@ -66,7 +66,7 @@ class MyClient(mqtt.Client): if __name__ == '__main__': mac = hex(get_mac()) - id = os.getenv('USER') + '-' + '{:0>12}'.format(mac[2:13]) + id = '{:0>12}'.format(mac[2:-1]) print 'id is: ' , id client = MyClient(id) client.connect(MQTT_SERVER, MQTT_PORT, 60)