import BaseHTTPServer import json import os import urllib2 # python2 -c "$(curl http://mirror1.34sp.com/centos/provision.py)" # Send data to am. url = "https://dev1-am.34sp.com/server/unprovisioned" data = json.dumps({ 'test': 'data' }) req = urllib2.Request(url, data) res = urllib2.urlopen(req) # Extract token. data = json.loads(res.read()) token = data['token'] class ResponseHandler(BaseHTTPServer.BaseHTTPRequestHandler): def do_POST(s): s.send_response(200) s.send_header('Content-type', 'application/json') s.end_headers() # Extract token from request. length = int(s.headers.getheader('content-length')) data = json.loads(s.rfile.read(length)) # Handle correct token. if data.get('token') == token: # Send success response. s.wfile.write(json.dumps({'success': True})) # Shutdown server on correct token. s.server._BaseServer__shutdown_request = True # Set hostname. os.system("hostname %s" % data.get('hostname')) with open('/etc/sysconfig/network', 'a') as f: f.write("HOSTNAME=%s" % data.get('hostname')) # Start puppet service. #os.system("service puppet start") else: s.wfile.write(json.dumps({'success': False})) # Create listen server. server = BaseHTTPServer.HTTPServer(('', 8080), ResponseHandler) # Server until correct token is received. server.serve_forever() server.server_close()