Как получить статус шифрования (да / нет) для iSCSI sotrage, используя API в SoftLayer
2 ответа
Получить дочерние аккаунты из аккаунта
"""
This script retrieves account's brand and owned accounts (child accounts)
Important links:
http://sldn.softlayer.com/reference/services/SoftLayer_Account/getBrand
http://sldn.softlayer.com/reference/services/SoftLayer_Brand/getOwnedAccounts
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer
import pprint
# Your SoftLayer API username and key.
USERNAME = 'set me'
API_KEY = 'set me'
# Declaring the API client
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
try:
brand = client['SoftLayer_Account'].getBrand()
print("Brand Id: %s" % brand['id'])
childAccounts = client['SoftLayer_Brand'].getOwnedAccounts(id=brand['id'])
pprint.pprint(childAccounts)
except SoftLayer.SoftLayerAPIError as e:
print(('Error faultCode=%s, faultString=%s'
% (e.faultCode, e.faultString)))
Получить доступные разрешения
"""
Retrieve all available permissions
Important links:
http://sldn.softlayer.com/reference/services/SoftLayer_User_Customer_CustomerPermission_Permission/getAllObjects
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer
import pprint
# Your SoftLayer API username and key.
USERNAME = 'set me'
API_KEY = 'set me'
# Declaring the API client
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
try:
permissions = client['SoftLayer_User_Customer_CustomerPermission_Permission'].getAllObjects()
pprint.pprint(permissions)
except SoftLayer.SoftLayerAPIError as e:
print(('Error faultCode=%s, faultString=%s'
% (e.faultCode, e.faultString)))
Свойство hasEncryptionAtRest предоставит эту информацию, вы можете попробовать следующий запрос на отдых:
https://$user:$apiKey@api.softlayer.com/rest/v3/SoftLayer_Network_Storage/$storageId/getObject?objectMask=mask[hasEncryptionAtRest]
Method: Get
Замените: $ user, $ apiKey и $storageId своими собственными значениями
Рекомендации:
обновленный
Вот скрипт Python для него с использованием метода get_iscsi
"""
This script retrieves storage with hasEncryptionAtRest
Important manual pages:
https://github.com/softlayer/softlayer-python/blob/master/SoftLayer/managers/iscsi.py
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer
import pprint
# Your SoftLayer API username and key.
USERNAME = 'set me'
API_KEY = 'set me'
# Define iscsi's identifier
volumeId = 16933699
# Declaring the API client
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
iscsiManager = SoftLayer.ISCSIManager(client)
try:
result = iscsiManager.get_iscsi(volumeId, mask='hasEncryptionAtRest')
pprint.pprint(result)
except SoftLayer.SoftLayerAPIError as e:
print(('Error faultCode=%s, faultString=%s'
% (e.faultCode, e.faultString)))
Обновлено 2
Чтобы получить публичные IP-адреса аккаунта
Этот скрипт поможет получить информацию с публичного IP-адреса из вашей учетной записи. """Этот скрипт извлекает публичные IP-адреса учетной записи.
Important links:
http://sldn.softlayer.com/reference/services/SoftLayer_Account/getIpAddresses
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer
import pprint
# Your SoftLayer API username and key.
USERNAME = 'set me'
API_KEY = 'set me'
# Define an objectFilter to get public ips
objectFilter = {"ipAddresses": {"subnet": {"addressSpace": {"operation": "PUBLIC"}}}}
# Define an object mask to get id and ipaddress from ips
objectMask = 'id,ipAddress'
# Declaring the API client
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
try:
result = client['SoftLayer_Account'].getIpAddresses(mask=objectMask, filter=objectFilter)
pprint.pprint(result)
except SoftLayer.SoftLayerAPIError as e:
print(('Error faultCode=%s, faultString=%s'
% (e.faultCode, e.faultString)))
Обновлено 3
Получить публичные ip-адреса аккаунта и включить их в черный список хостов.
К сожалению, ни один сервис SL API не может помочь в этом, но просмотрите следующую ссылку:
Вы можете попробовать с этим проверить IP-адреса, поэтому скрипт:
"""
This script retrieves account's public ip addresses
Important links:
http://sldn.softlayer.com/reference/services/SoftLayer_Account/getIpAddresses
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer
import dns.resolver
bls = ["zen.spamhaus.org", "spam.abuse.ch", "cbl.abuseat.org", "virbl.dnsbl.bit.nl", "dnsbl.inps.de",
"ix.dnsbl.manitu.net", "dnsbl.sorbs.net", "bl.spamcannibal.org", "bl.spamcop.net",
"xbl.spamhaus.org", "pbl.spamhaus.org", "dnsbl-1.uceprotect.net", "dnsbl-2.uceprotect.net",
"dnsbl-3.uceprotect.net", "db.wpbl.info", "dyn.nszones.com", "bl.nszones.com"]
# Your SoftLayer API username and key.
USERNAME = 'set me'
API_KEY = 'set me'
# Define an objectFilter to get public ips
objectFilter = {"ipAddresses": {"subnet": {"addressSpace": {"operation": "PUBLIC"}}}}
# Define an object mask to get id and ipaddress from ips
objectMask = 'id,ipAddress'
# Declaring the API client
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
try:
ips = client['SoftLayer_Account'].getIpAddresses(mask=objectMask, filter=objectFilter)
for ip in ips:
print(ip['ipAddress'])
for bl in bls:
try:
my_resolver = dns.resolver.Resolver()
query = '.'.join(reversed(ip['ipAddress'].split("."))) + "." + bl
answers = my_resolver.query(query, "A")
answer_txt = my_resolver.query(query, "TXT")
print ' IP: %s IS listed in %s (%s: %s)' % (ip['ipAddress'], bl, answers[0], answer_txt[0])
except dns.resolver.NXDOMAIN:
print ' IP: %s is NOT listed in %s' % (ip['ipAddress'], bl)
except SoftLayer.SoftLayerAPIError as e:
print(('Error faultCode=%s, faultString=%s'
% (e.faultCode, e.faultString)))
Как вы видите, ips будет проверяться на хостах "bls", вы можете добавить больше хостов для проверки, здесь онлайн-сеть из вас может получить черный список хостов для проверки:
Чтобы получить теги
"""
This script retrieves account's tags
Important links:
http://sldn.softlayer.com/reference/services/SoftLayer_Account/getTags
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer
import pprint
# Your SoftLayer API username and key.
USERNAME = 'set me'
API_KEY = 'set me'
# Declaring the API client
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
try:
result = client['SoftLayer_Account'].getTags()
pprint.pprint(result)
except SoftLayer.SoftLayerAPIError as e:
print(('Error faultCode=%s, faultString=%s'
% (e.faultCode, e.faultString)))
Получение устройств через тег
"""
Search devices by tag
Important manual pages:
http://sldn.softlayer.com/reference/services/SoftLayer_Search/advancedSearch
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
# Example to search tags for a VSI
import SoftLayer
import pprint
# Your SoftLayer API username.
USERNAME = 'set me'
API_KEY = 'set me'
# Tag to search
tag ="singapore1"
# Declare the API client
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY, endpoint_url='https://api.softlayer.com/xmlrpc/v3.1/')
searchService = client['SoftLayer_Search']
# Building the search string
searchString = "tagReferences.tag.name:%s _objectType:SoftLayer_Hardware,SoftLayer_Virtual_Guest,SoftLayer_Network_Vlan_Firewall,SoftLayer_Network_Application_Delivery_Controller _sort:[fullyQualifiedDomainName:asc]" % tag
try:
result = searchService.advancedSearch(searchString)
pprint.pprint(result)
except SoftLayer.SoftLayerAPIError as e:
print("Error faultCode=%s, faultString=%s" % (e.faultCode, e.faultString))
exit(1)
Получить устройства (теги) из списка IP-адресов
"""
This script retrieve devices which belongs from a list ip addresses.
Each device display information about its tags
Important links:
http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/findByIpAddress
http://sldn.softlayer.com/reference/services/SoftLayer_Hardware/findByIpAddress
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer
# Your SoftLayer API username and key.
USERNAME = 'set me'
API_KEY = 'set me'
# Define ip addresses to search in devices (HW/VSI)
ips = ['159.8.30.72', '159.122.15.65', '127.0.0.1']
# Object mask to get tag information
objectMask = 'mask[tagReferences[id,tag[id,name]]]'
# Declaring the API client
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
try:
for ip in ips:
print("Ip Address: %s" % ip)
result = client['SoftLayer_Virtual_Guest'].findByIpAddress(ip, mask=objectMask)
if not result:
result = client['SoftLayer_Hardware'].findByIpAddress(ip, mask=objectMask)
if not result:
print(" There not exists a server with this ip address")
else:
print(" Device Ip: %s, Hostname: %s Domain: %s" % (result['id'], result['hostname'], result['domain']))
for tag in result['tagReferences']:
if tag:
print(" TagReferencesId: %s TagId: %s TagName: %s" % (tag['id'], tag['tag']['id'], tag['tag']['name']))
except SoftLayer.SoftLayerAPIError as e:
print(('Error faultCode=%s, faultString=%s'
% (e.faultCode, e.faultString)))
Чтобы получить устройства учетной записи (HW/VSI)
"""
This script retrieve devices HW and VSI
Important links:
http://sldn.softlayer.com/reference/services/SoftLayer_Account/getVirtualGuests
http://sldn.softlayer.com/reference/services/SoftLayer_Account/getHardware
License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer
from prettytable import PrettyTable
# Your SoftLayer API username and key.
USERNAME = 'set me'
API_KEY = 'set me'
# Declaring the API client
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
#Define an object mask to get public and private ip
mask = 'mask[primaryIpAddress, primaryBackendIpAddress]'
#table = BeautifulTable()
table = PrettyTable(["Id", "Hostname", "Domain", "Public IP", "Private IP", "Type"])
try:
vsis = client['SoftLayer_Account'].getVirtualGuests(mask=mask)
for vsi in vsis:
if 'primaryIpAddress' not in vsi:
vsi['primaryIpAddress'] = 'None'
table.add_row([vsi['id'], vsi['hostname'], vsi['domain'], vsi['primaryIpAddress'] , vsi['primaryBackendIpAddress'], "Virtual Guest"])
hws = client['SoftLayer_Account'].getHardware(mask=mask)
for hw in hws:
if 'primaryIpAddress' not in hw:
hw['primaryIpAddress'] = 'None'
table.add_row([hw['id'], hw['hostname'], hw['domain'], hw['primaryIpAddress'], hw['primaryBackendIpAddress'], "Hardware"])
print(table)
except SoftLayer.SoftLayerAPIError as e:
print(('Error faultCode=%s, faultString=%s'
% (e.faultCode, e.faultString)))