Скрипт инвентаризации источников данных Oracle на сервере приложений WebSphere

Проблема, с которой мне пришлось столкнуться, когда я начал заниматься администрированием серверов приложений WebSphere Application Server, заключается в том, что интерфейс консоли администрирования WAS был написан java-программистами с учётом их особенных программистских потребностей, и его сложно использовать для повседневных задач администрирования.

Казалось бы, что стоит отображать в списке источников данных адрес подключения к базе данных? Например, в одной замечательной системе в одной большой организации, на сервере присутствовало 164 источника данных с примерно одинаковыми именами типа BackupDSxx – представляете, как легко было во всём этом разобраться?

Эту проблему можно частично компенсировать самописными скриптами, которые отображают данные в нужном формате, либо выполняют команды, которые нужно выполнить, не заставляя при этом переходить по десятку различных веб-страниц с формами и кнопками.

Данный скрипт был написан для инвентаризации JDBC-источников данных Oracle, прописанных на сервере приложений WebSphere Application Server. Он находит все источники данных в ячейке, и выводит такие их атрибуты, как имя, JNDI name, описание, алиас, используемый для подключения, и URL подключения к базе данных. Значения разделены табуляцией, чтобы можно было перенаправить вывод в файл, и вставить его содержимое в Excel-таблицу.

import sys
import java

lineSeparator = java.lang.System.getProperty('line.separator')
dsList = AdminConfig.list('DataSource')
# для более конкретного указания области, в которой нужно искать источники данных,
# можно использовать такую строчку - указать имя ячейки, ноды, сервера:
#dsList = AdminConfig.list('DataSource', AdminConfig.getid('/Cell:AdminCell/Node:/'))
dsArray = dsList.split(lineSeparator)

print 'Name\tJNDI Name\tDescription\tJDBC Provider\tAlias\tXA Alias\tURL\tScope'

for ds in dsArray:
  url=''
  provider = AdminConfig.showAttribute(ds, 'provider')
  dsPropertySet = AdminConfig.showAttribute(ds, 'propertySet')
  dsProperties = AdminConfig.showAttribute(dsPropertySet, 'resourceProperties')
  dsPropsArray = dsProperties.split(' ')
  for prop in dsPropsArray:
    if prop[0:4] == 'URL(':
      url = AdminConfig.showAttribute(prop, 'value')
  col1 = str(AdminConfig.showAttribute(ds, 'name'))
  col2 = str(AdminConfig.showAttribute(ds, 'jndiName'))
  col3 = str(AdminConfig.showAttribute(ds, 'description')).replace('\n',' ')
  col4 = str(AdminConfig.showAttribute(provider, 'name'))
  col5 = str(AdminConfig.showAttribute(ds, 'authDataAlias'))
  col6 = str(AdminConfig.showAttribute(ds, 'xaRecoveryAuthAlias'))
  col7 = str(provider).split('/')[-1].split('|')[0]
  print col1 + '\t' + col2 + '\t' + col3 + '\t' + col4 + '\t' + col5 + '\t' + col6 + '\t' + url + '\t' + col7

Добавить комментарий