2016-11-22 59 views

回答

0

看看這個代碼來獲取裸機服務器的詳細信息:

這裏VM的例子

""" 
Get Virtual Guest details. It retrieves virtual guest information. 

Important manual pages: 
http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/getObject 
http://sldn.softlayer.com/reference/services/SoftLayer_Account/getVirtualGuests 

License: http://sldn.softlayer.com/article/License 
Author: SoftLayer Technologies, Inc. <[email protected]> 
""" 
# So we can talk to the SoftLayer API: 
import SoftLayer 

# For nice debug output: 
from pprint import pprint as pp 

# Set your SoftLayer API username and key. 

# Your SoftLayer API username and key. 
API_USERNAME = 'set me' 
API_KEY = 'set me' 

# Set the server id that you wish to get details. 
# Call the getVirtualGuests method from SoftLayer_Account 
serverId = 5464742 

# Retrieve the wanted server information using a mask 
mask = 'operatingSystem.passwords, networkComponents, datacenter, notes' 

# Make a connection to the Virtual_Guest service. 
client = SoftLayer.Client(
    username=API_USERNAME, 
    api_key=API_KEY 
) 

try: 
    # Make the call to retrieve the server details. 
    virtualGuestDetails = client['Virtual_Guest'].getObject(id=serverId, 
                mask=mask) 
    pp(virtualGuestDetails) 

except SoftLayer.SoftLayerAPIError as e: 
     pp('Unable to get the Virtual Guest infomrmation faultCode=%s, faultString=%s' 
      % (e.faultCode, e.faultString)) 

這個人是裸機

""" 
Get Bare Metal details. 

Retrieve a list of bare metal servers in the account and print 
a report with server hostname, domain, login info, network, CPU, 
and RAM details. 
This script makes a single call to the getHardware() method in the 
SoftLayer_Account API service and uses an object mask to retrieve 
related information. 
See below for more details. 

Important manual pages: 
http://sldn.softlayer.com/reference/services/SoftLayer_Account/getHardware 
http://sldn.softlayer.com/reference/datatypes/SoftLayer_Hardware_Server/ 

License: http://sldn.softlayer.com/article/License 
Author: SoftLayer Technologies, Inc. <[email protected]> 
""" 
import SoftLayer 

""" 
Your SoftLayer API username and key. 

Generate an API key at the SoftLayer Customer Portal: 
https://manage.softlayer.com/Administrative/apiKeychain 
""" 
USERNAME = 'set me' 
API_KEY = 'set me' 

""" 
Add an object mask to retrieve our hardwares' related items such as its 
operating system, hardware components, and network components. Object masks 
can retrieve any information related to your object. See 
# http://sldn.softlayer.com/reference/datatypes/SoftLayer_Hardware_Server 
# for a list of the relational properties you can retrieve along with hardware. 
""" 
objectMask = 'processors, processorCount, memory, memoryCount, networkComponents, primaryIpAddress, operatingSystem.passwords' 


# Declare a new API service object. 
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY) 
accountService = client['SoftLayer_Account'] 

try: 
    # Make the call to retrieve our bare metal servers. 
    hardwareList = accountService.getHardware(mask=objectMask) 
except SoftLayer.SoftLayerAPIError as e: 
    """ 
    If there was an error returned from the SoftLayer API then bomb out with the 
    error message. 
    """ 
    print("Unable to retrieve the bare metal list. " 
      % (e.faultCode, e.faultString)) 

for hardware in hardwareList: 
    passwords = {} 
    passwords['username'] = "no username" 
    passwords['password'] = "no password" 
    if len(hardware['operatingSystem']['passwords']) >= 1: 
     passwords = hardware['operatingSystem']['passwords'][0] 
    networks = hardware['networkComponents'] 
    """ 
    Go through the hardware's network components to get it's public and 
    private network ports. Save MAC addresses. 
    """ 
    publicMacAddress = 'not found' 
    privateMacAddress = 'not found' 
    for network in networks: 
     """ 
     SoftLayer uses eth0 on the private network and eth1 on the public 
     network. 
     """ 
     if network['name'] == 'eth' and network['port'] == 0: 
      privateMacAddress = network['macAddress'] 
     elif network['name'] == 'eth' and network['port'] == 1: 
      publicMacAddress = network['macAddress'] 

    """ 
    Hardware can only have like processors in them, so use the first item in 
    the processors array to get the type of processor in the server. 
    """ 
    processorType = hardware['processors'][0]['hardwareComponentModel']['hardwareGenericComponentModel']['capacity'] +\ 
        hardware['processors'][0]['hardwareComponentModel']['hardwareGenericComponentModel']['units'] + " " +\ 
        hardware['processors'][0]['hardwareComponentModel']['hardwareGenericComponentModel']['description'] 

    # Treat memory the same way we did processors. 
    memoryType = hardware['memory'][0]['hardwareComponentModel']['hardwareGenericComponentModel']['capacity'] +\ 
       hardware['memory'][0]['hardwareComponentModel']['hardwareGenericComponentModel']['units'] + " " +\ 
       hardware['memory'][0]['hardwareComponentModel']['hardwareGenericComponentModel']['description'] 

    # All done! Print hardware info. 
    print("Hostname: " + hardware['hostname']) 
    print("Domain: " + hardware['domain']) 
    print("Login: " + passwords['username'] + "/" + passwords['password']) 
    print("Public IP Address: " + hardware['primaryIpAddress']) 
    print("Public MAC Address: " + publicMacAddress) 
    print("Private IP Address: " + hardware['privateIpAddress']) 
    print("Private MAC Address: " + privateMacAddress) 
    print("CPUs: " + str(hardware['processorCount']) + "x " + processorType) 
    print("RAM: " + str(hardware['memoryCount']) + "x " + memoryType) 
    print(" ") 

基本上你需要使用一個對象掩碼來獲取服務器的屬性,你可以看到文件中的所有屬性考試http://sldn.softlayer.com/reference/datatypes/SoftLayer_Hardware_Server

讓我知道你是否有更多的問題

相關問題