Created
August 15, 2018 04:58
-
-
Save weldpua2008/41c39751a127cfc63e9f065f8842a41d to your computer and use it in GitHub Desktop.
Get root password on all servers via LeaseWEB API v2.0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
import requests | |
import json | |
apiurl = 'https://api.leaseweb.com/bareMetals/v2/servers' | |
apikey = '****-****-***' | |
headers = {"X-Lsw-Auth": apikey} | |
results = [] | |
debug = 0 | |
ips_pool = [] | |
def get_lists(): | |
servers_number = None | |
baremetal_obj = None | |
result_baremetal_obj = [] | |
finished = False | |
ofset = 0 | |
limit = 50 | |
while not finished: | |
apiurlWithOffset = apiurl + '?offset='+str(ofset)+'&limit=' + str(limit) | |
print apiurlWithOffset | |
response = requests.get(apiurlWithOffset, headers=headers) | |
content = response.text | |
content_json = json.loads(content) | |
ofset = ofset + limit | |
baremetal_obj = None | |
try: | |
servers_number = len(content_json["bareMetals"]) | |
if servers_number < 1: | |
finished = True | |
break | |
baremetal_obj = content_json["bareMetals"] | |
result_baremetal_obj = result_baremetal_obj + baremetal_obj | |
except KeyError as e: | |
# try: | |
# "_metadata" | |
# except Exception as e: | |
# raise e | |
servers_number = len(content_json["servers"]) | |
if servers_number < 1: | |
finished = True | |
break | |
baremetal_obj = content_json["servers"] | |
# print type(baremetal_obj) | |
result_baremetal_obj = result_baremetal_obj + baremetal_obj | |
# if isinstance(baremetal_obj,list): | |
# result_baremetal_obj.update(baremetal_obj.copy()) | |
# print result_baremetal_obj | |
if ofset > 500: | |
finished = True | |
return (servers_number, result_baremetal_obj) | |
def get_credentials_by_serverid(id=None, content_json=[]): | |
baremetal_data = {} | |
# print(content_json) | |
servers_number = len(content_json) | |
for count in range(servers_number): | |
baremetal_json = content_json[count] | |
baremetal_id = None | |
try: | |
baremetal_id = baremetal_json['bareMetal']["bareMetalId"] | |
except KeyError as e: | |
# print baremetal_json | |
baremetal_id = baremetal_json["id"] | |
reference = baremetal_json["contract"]["reference"] | |
internalReference = baremetal_json["contract"]["internalReference"] | |
# print baremetal_json["contract"] | |
# print len(reference) | |
# if isinstance(reference, basestring) and len(reference) > 0: | |
# continue | |
# if baremetal_id == id: | |
# apiurl_getip = 'https://api.leaseweb.com/bareMetals/v2/servers/' + baremetal_id + '/credentials' | |
apiurl_getip = 'https://api.leaseweb.com/bareMetals/v2/servers/' + baremetal_id + '/credentials/OPERATING_SYSTEM/root' | |
if debug == 1: | |
print(apiurl_getip + "\n") | |
try: | |
ips_request = requests.get(apiurl_getip, headers=headers) | |
ips_request_text = ips_request.text | |
ips_request_json = json.loads(ips_request_text) | |
print "{} {} {}".format(internalReference,ips_request_json["password"],reference) | |
except Exception as e: | |
print e | |
servers_number, baremetal_obj = get_lists() | |
get_credentials_by_serverid("281230", baremetal_obj) |
Update Reference by server name
# -*- coding: utf-8 -*-
import requests
import json
import argparse
import sys
# apiurl = 'https://api.leaseweb.com/v2/bareMetals'
apiurl = 'https://api.leaseweb.com/bareMetals/v2/servers'
apikey = '****-****-***'
headers = {"X-Lsw-Auth": apikey}
results = []
debug = 0
ips_pool = []
def get_lists():
servers_number = None
baremetal_obj = None
result_baremetal_obj = []
finished = False
ofset = 0
limit = 50
while not finished:
apiurlWithOffset = apiurl + '?offset='+str(ofset)+'&limit=' + str(limit)
# print apiurlWithOffset
response = requests.get(apiurlWithOffset, headers=headers)
content = response.text
content_json = json.loads(content)
ofset = ofset + limit
baremetal_obj = None
try:
servers_number = len(content_json["bareMetals"])
if servers_number < 1:
finished = True
break
baremetal_obj = content_json["bareMetals"]
result_baremetal_obj = result_baremetal_obj + baremetal_obj
except KeyError as e:
# try:
# "_metadata"
# except Exception as e:
# raise e
servers_number = len(content_json["servers"])
if servers_number < 1:
finished = True
break
baremetal_obj = content_json["servers"]
# print type(baremetal_obj)
result_baremetal_obj = result_baremetal_obj + baremetal_obj
# if isinstance(baremetal_obj,list):
# result_baremetal_obj.update(baremetal_obj.copy())
# print result_baremetal_obj
if ofset > 500:
finished = True
return (servers_number, result_baremetal_obj)
def get_id_by_servername(name=None,servername=None, content_json=[]):
baremetal_data = {}
# print(content_json)
servers_number = len(content_json)
for count in range(servers_number):
baremetal_json = content_json[count]
baremetal_id = None
try:
baremetal_id = baremetal_json['bareMetal']["bareMetalId"]
except KeyError as e:
# print baremetal_json
baremetal_id = baremetal_json["id"]
reference = baremetal_json["contract"]["reference"]
internalReference = baremetal_json["contract"]["internalReference"]
# print internalReference
# apiurl_getip = 'https://api.leaseweb.com/bareMetals/v2/servers/' + baremetal_id + '/credentials/OPERATING_SYSTEM/root'
apiurl_getip = 'https://api.leaseweb.com/bareMetals/v2/servers/' + baremetal_id + ''
if debug == 1:
print(apiurl_getip + "\n")
try:
if name in internalReference:
print "Going update {} {} => {}".format(internalReference,reference,servername)
# payload = "{ \"reference\": \""+ servername + "\"}"
payload = { "reference" : servername }
# print payload
# r = requests.put('http://httpbin.org/put', data = {'key':'value'})
ips_request = requests.put(apiurl_getip, headers=headers, data=payload)
# ips_request = requests.get(apiurl_getip, headers=headers)
# ips_request_text = ips_request.text
# ips_request_json = json.loads(ips_request_text)
# print ips_request_json
# print "{} {} {}".format(internalReference,ips_request_json["password"],reference)
except Exception as e:
print e
if __name__ == '__main__':
parser = argparse.ArgumentParser(add_help=True)
parser.add_argument('-r', '--reference', action="store", help="Droplet name", required=True)
parser.add_argument('-s', '--servername', action="store", help="Snapshot", required=True)
args = parser.parse_args()
try:
servers_number, baremetal_obj = get_lists()
get_id_by_servername(args.servername,args.reference,baremetal_obj)
except Exception as e:
print("Error: %s" % e)
sys.exit(1)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Get IPs by server name