#内容
Bluemix Infrastructure (旧SoftLayer)のデバイス(ベアメタルや仮想サーバー)のユーザー名とパスワードを、毎回ポータルにアクセスするのも煩わしくなってきたので、コマンドで一覧表示できるスクリプトをつくりました。
#参考記事
ShinobiLayer: Virtual Serverの作成者や稼動ホストのRack/Slot情報を確認するスクリプト - Qiita
#スクリプト
getDevicesTable.py
import SoftLayer
import dateutil.parser
from prettytable import PrettyTable
# account info
client = SoftLayer.create_client_from_env()
objectmask_vitualGuests = """
id,
virtualGuests[
id,
notes,
provisionDate,
fullyQualifiedDomainName,
primaryBackendIpAddress,
primaryIpAddress,
datacenter[
longName
],
operatingSystem[
softwareLicense[
softwareDescription[
name
]
],
passwords[
username,
password
]
]
]
"""
objectmask_hardware = """
id,
hardware[
id,
notes,
provisionDate,
fullyQualifiedDomainName,
primaryBackendIpAddress,
primaryIpAddress,
datacenter[
longName
],
operatingSystem[
softwareLicense[
softwareDescription[
name
]
],
passwords[
username,
password
]
]
]
"""
vg = client['Account'].getObject(mask=objectmask_vitualGuests)
hw = client['Account'].getObject(mask=objectmask_hardware)
virtualGuests=vg.keys()[0]
hardware=hw.keys()[0]
table = PrettyTable([
'Device Name',
'Device Type',
'Location',
'Public IP',
'Private IP',
'Start Date',
'OS Name',
'Username',
'Password'])
for key in range(len(vg['virtualGuests'])):
for key2 in range(len(vg['virtualGuests'][key]['operatingSystem']['passwords'])):
table.add_row([
vg['virtualGuests'][key]['fullyQualifiedDomainName'],
virtualGuests,
vg['virtualGuests'][key]['datacenter']['longName'],
vg['virtualGuests'][key].get('primaryIpAddress'),
vg['virtualGuests'][key]['primaryBackendIpAddress'],
dateutil.parser.parse(vg['virtualGuests'][key]['provisionDate']).strftime('%Y/%m/%d'),
vg['virtualGuests'][key]['operatingSystem']['softwareLicense']['softwareDescription']['name'][:16],
vg['virtualGuests'][key]['operatingSystem']['passwords'][key2]['username'],
vg['virtualGuests'][key]['operatingSystem']['passwords'][key2]['password']
])
for key in range(len(hw['hardware'])):
for key2 in range(len(hw['hardware'][key]['operatingSystem']['passwords'])):
table.add_row([
hw['hardware'][key]['fullyQualifiedDomainName'],
hardware,
hw['hardware'][key]['datacenter']['longName'],
hw['hardware'][key].get('primaryIpAddress'),
hw['hardware'][key]['primaryBackendIpAddress'],
dateutil.parser.parse(hw['hardware'][key]['provisionDate']).strftime('%Y/%m/%d'),
hw['hardware'][key]['operatingSystem']['softwareLicense']['softwareDescription']['name'][:16],
hw['hardware'][key]['operatingSystem']['passwords'][key2]['username'],
hw['hardware'][key]['operatingSystem']['passwords'][key2]['password']
])
print(table)
#実行結果の例
+-----------------------------------------------+---------------+----------+-----------------+---------------+------------+------------------+-----------------------------+---------------+
| Device Name | Device Type | Location | Public IP | Private IP | Start Date | OS Name | Username | Password |
+-----------------------------------------------+---------------+----------+-----------------+---------------+------------+------------------+-----------------------------+---------------+
| xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.vsphere.local | virtualGuests | Tokyo 2 | None | 10.133.xx.xxx | 2016/10/26 | Windows 2012 R2 | Administrator | xxxxxxxx |
| win2012r2.softlayer.com | virtualGuests | Tokyo 2 | 161.202.xxx.xx | 10.132.xx.xxx | 2016/05/09 | Windows 2012 R2 | Administrator | xxxxxxxx |
| esx01.softlayer.com | hardware | Tokyo 2 | 161.202.xxx.xx | 10.132.xx.xxx | 2016/04/19 | Customer Install | root | xxxxxxxxx |
| esx02.softlayer.com | hardware | Tokyo 2 | 161.202.xxx.xx | 10.132.xx.xxx | 2016/04/19 | Customer Install | root | xxxxxxxxxxxxx |
| vyatta01.softlayer.com | hardware | Tokyo 2 | 161.202.xxx.xxx | 10.132.xx.xxx | 2016/04/08 | Vyatta Subscript | root | xxxxxxxx |
| vyatta01.softlayer.com | hardware | Tokyo 2 | 161.202.xxx.xxx | 10.132.xx.xxx | 2016/04/08 | Vyatta Subscript | vyatta | xxxxxxxx |
+-----------------------------------------------+---------------+----------+-----------------+---------------+------------+------------------+-----------------------------+---------------+