+URI = 'debug@autossh.suanzi.ai'
+
+def get_all_connected(host, port, user, password):
+ command = 'sshpass -p' + password + ' ssh -q -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile /dev/null" ' + user + '@' + host + ' netstat -tn | grep ' + str(port) + ' | grep ESTABLISHED | wc -l'
+ output = check_output(shlex.split(command), shell=False)
+ return int(output)
+
+def on_connect(client, userdata, flags, rc):
+ client.subscribe(userdata['id'])
+ print "Connected with result code " + str(rc) +'\n'
+ if userdata['action'] == 'connect':
+ payload = {'from':userdata['id'], 'type':'request', 'command':'ssh'}
+ client.publish(userdata['to'], str(payload))
+ elif userdata['action'] == 'list':
+ payload = {'from':userdata['id'], 'type':'request', 'command':'list'}
+ client.publish(userdata['to'], str(payload))
+ print'{0}\t\t{1}'.format(' Device ID ', 'Data')
+ print '-' * 30
+
+def on_message(client, userdata, msg):
+# print('Receive topic:' + msg.topic + ' payload: ' +str(msg.payload))
+ payload = ast.literal_eval(str(msg.payload))
+ from_id = payload['from']
+ if payload['type'] == 'response':
+ if payload['command'] == 'ssh':
+ port = payload['data']
+ print 'run "ssh ' + URI + ' -p ' + str(port) + '" to connect to device (%s)' % from_id
+ client.disconnect()
+ sys.exit(0)
+ elif payload['command'] == 'list':
+ print '{0}\t\t{1}'.format(payload['from'], payload['data'])
+ client.total = client.total - 1
+ if client.total == 0:
+ client.disconnect()
+ sys.exit(0)
+
+def get_mac_str():
+ mac = hex(get_mac())
+ return '{:0>12}'.format(mac[2:-1])