SoftLayer verwaltet das System in der Cloud über Portal. SoftLayer Customer Portal
Sie benötigen eine Benutzer-ID, um auf das Portal zugreifen zu können. Die erste Benutzer-ID, die beim Erstellen eines SoftLayer-Kontos erstellt wurde, wird als Hauptbenutzer bezeichnet und verfügt über alle Systemberechtigungen für dieses Konto.
Da es für einen Hauptbenutzer nicht praktisch ist, alle Systeme zu verwalten, erstellt der Hauptbenutzer normalerweise untergeordnete Benutzer und delegiert die Verwaltungsberechtigung über einige Systeme. Der untergeordnete Benutzer erstellt ferner einen untergeordneten Benutzer und delegiert die Berechtigung und delegiert die Entwicklungs- und Betriebsverwaltung auf dem System an den Entwickler und die für den Betrieb verantwortliche Person.
Die Figur ist wie folgt.
Der Hauptbenutzer weist untergeordneten Benutzern Berechtigungen zu und gibt an, auf welche Geräte sie zugreifen können. Der untergeordnete Benutzer weist dem Enkelkind die Berechtigung zum Delegieren der Verwaltung zu und gibt die Geräte an, die darauf zugreifen können.
Auf diese Weise haben Benutzer eine hierarchische Struktur. Sie können die Liste der Benutzer in Portal anzeigen, aber die Eltern-Kind-Beziehung der Benutzer in der Liste in Portal oder CLI nicht. Dies ist für die Benutzerverwaltung unpraktisch. Daher habe ich ein Skript erstellt, das die SoftLayer-API verwendet, um eine Liste der Benutzer und eine Eltern-Kind-Beziehung abzurufen.
sluser.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
SL_USERNAME = <SL User Name>
SL_API_KEY = <SL API Key>
sl_getUser.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'takechika'
import sys
from prettytable import PrettyTable
import SoftLayer
import sluser
SL_USERNAME = sluser.SL_USERNAME
SL_API_KEY = sluser.SL_API_KEY
_userMask = '''
id,
accountId,
parentId,
firstName,
lastName,
email
'''
_userTableHeader = [
'ParentID',
'ParentName',
'UserID',
'UserName',
'EMail'
]
def getChildren(parent, users):
"""Get children of the parent from the user list /Holen Sie den untergeordneten Benutzer, dass dieser Benutzer ein übergeordneter Benutzer ist, aus der Liste.
parent:Übergeordnetes Benutzerobjekt(User_Customer)
users:Liste der zu durchsuchenden untergeordneten Benutzer(an array of User_Customer)
"""
a = {}
b = []
for u in users:
if u.get('parentId') == parent.get('id'):
a = {
"ParentID": u.get('parentId'),
"ParentName": parent.get('lastName') + " " + parent.get('firstName'),
"ChildID": u.get('id'),
"ChildName": u.get('lastName') + " " + u.get('firstName'),
"Email": u.get('email')
}
b.append(a)
return(b)
client = SoftLayer.Client(username=SL_USERNAME, api_key=SL_API_KEY)
users = client['Account'].getUsers(mask=_userMask)
# Find the master user id
for u in users:
if u.get('parentId') == '':
masterUser = u
print("Master user is \"%s %s\" (id: %s)" % (masterUser.get('lastName'), masterUser.get('firstName'), masterUser.get('id')))
# Table definition
table = PrettyTable(_userTableHeader)
table.padding_width = 1
# Get user list
count = 0
for parent in users:
userList = getChildren(parent, users)
for x in userList[0:]:
table.add_row(
[
x['ParentID'],
x['ParentName'],
x['ChildID'],
x['ChildName'],
x['Email']
]
)
count = count + 1
print(table)
print(count, "users")
exit()
Die Ausgabe sieht folgendermaßen aus (Benutzername und E-Mail-Adresse sind fiktiv): Der untergeordnete Benutzer und der entsprechende übergeordnete Benutzer werden in einer Liste angezeigt.
Master user is "Jedi Master" (id: 182178)
+----------+--------------------+--------+-----------------------+--------------------------+
| ParentID | ParentName | UserID | UserName | EMail |
+----------+--------------------+--------+-----------------------+--------------------------+
| 182178 | Jedi Master | 183358 | Obi-Wan Kenobi | [email protected] |
| 182178 | Jedi Master | 183362 | R2 D2 | [email protected] |
| 182178 | Jedi Master | 183372 | C 3PO | [email protected] |
| 182178 | Jedi Master | 183376 | Luke Skywalker | [email protected] |
| 183362 | Jedi Master | 183378 | Chew Bacca | [email protected] |
| 183358 | Obi-Wan Kenobi | 183360 | Anakin Skywalker | [email protected] |
+----------+--------------------+--------+-----------------------+--------------------------+
6 users
Recommended Posts