Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Python and EM CLI: The Enterprise Management Super Tools

3,887 views

Published on

Release 3 of Enterprise Manager gives the command line interface for EM a distinct advantage by moving the EMCLI functionality into Jython, a Java implementation of the Python programming language.

This session will provide an introduction to Python and give attendees a crash course in the newest version of EMCLI so they can get started using this powerful tool in their environments right away.

Learning Objectives:
-- Evaluate where Python can provide solutions in other aspects of the DBA's responsibility including automating password changes and backups.

-- Understand how to implement and use release 3 of EMCLI. Differentiate between the Jython architecture of release 3 versus earlier versions of EMCLI.

-- Have a basic understanding of and be able to construct simple scripts in Python.

Python and EM CLI: The Enterprise Management Super Tools

  1. 1. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org Python and EM CLI The Enterprise Management Super Tools
  2. 2. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgWho Am I? • Oracle ACE • IOUG Board of Directors • Oracle University Instructor • TCOUG Vice President • RAC Attack! Ninja • Lives in St. Paul, MN
  3. 3. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgOverview • History of Python • BDFL • Jython • JSON • Python Examples • EM CLI Examples
  4. 4. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgHistory • Created by Guido Van Rossum • Influenced by ABC • Released in 1991 • Named after Monty Python’s Flying Circus
  5. 5. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgBenevolent Dictator for Life (BDFL)
  6. 6. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org Scripting or Programming • Both! • Programming languages must be compiled • Compiled at runtime
  7. 7. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgJython • Python written in Java • Released in 1997 as JPython • Replaced “C” implementation of Python • EM CLI and WLST • No Java Experience Required
  8. 8. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgJSON • JavaScript Object Notation • Data Interchange Standard • A collection of name/value pairs • Universal • Python object
  9. 9. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgGetting Started • Built for Ease-of-Use • Indentation Format • Interactive Interface for VAR in myLoop: do this command print('This line does not belong in myLoop')
  10. 10. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgHello World! myvar = 'Hello World!' if myvar: print(myvar) Hello World!
  11. 11. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgHELP! • Search for Python help() help> STRINGS emcli> help('list_active_sessions')
  12. 12. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgBasic Object Types • String • List • Dictionary (Hash)
  13. 13. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org >>> mystring = 'word word word' >>> yourstring = mystring >>> yourstring += mystring >>> yourstring 'word word wordword word word' Strings
  14. 14. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org mystring = 'word word word' Strings
  15. 15. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org yourstring = mystring Strings
  16. 16. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org yourstring += mystring Strings
  17. 17. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org >>> yourstring 'word word wordword word word' Strings
  18. 18. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org >>> mystring = 'word word word' >>> yourstring = mystring >>> yourstring += mystring >>> yourstring 'word word wordword word word' Strings
  19. 19. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgLists – Parse /etc/oratab entries >>> oraline = 'orcl:/u01/app/oracle:N' >>> oraline.split(':') ['orcl', '/u01/app/oracle', 'N'] >>> orasplit = oraline.split(':') >>> if orasplit[0] == 'orcl': ... print('ORACLE_HOME: ' + orasplit[1]) ORACLE_HOME: /u01/app/oracle >>> while orasplit: ... print(orasplit.pop()) N /u01/app/oracle orcl >>> orasplit []
  20. 20. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgLists – Parse /etc/oratab entries >>> oraline = 'orcl:/u01/app/oracle:N'
  21. 21. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgLists – Parse /etc/oratab entries >>> oraline.split(':')
  22. 22. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgLists – Parse /etc/oratab entries >>> oraline.split(':') ['orcl', '/u01/app/oracle', 'N']
  23. 23. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgLists – Parse /etc/oratab entries >>> orasplit = oraline.split(':')
  24. 24. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgLists – Parse /etc/oratab entries >>> if orasplit[0] == 'orcl': print('ORACLE_HOME: ' + orasplit[1]) ORACLE_HOME: /u01/app/oracle
  25. 25. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgLists – Parse /etc/oratab entries >>> while orasplit: print(orasplit.pop()) N /u01/app/oracle orcl
  26. 26. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgLists – Parse /etc/oratab entries >>> orasplit []
  27. 27. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgLists – Parse /etc/oratab entries >>> oraline = 'orcl:/u01/app/oracle:N' >>> oraline.split(':') ['orcl', '/u01/app/oracle', 'N'] >>> orasplit = oraline.split(':') >>> if orasplit[0] == 'orcl': ... print('ORACLE_HOME: ' + orasplit[1]) ORACLE_HOME: /u01/app/oracle >>> while orasplit: ... print(orasplit.pop()) N /u01/app/oracle orcl >>> orasplit []
  28. 28. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org Dictionaries (Hashes) Target Properties >>> mydict = {'Product':'Enterprise Manager', 'Vendor':'Oracle', 'Acronym':'EM', 'CLI':'EM CLI'} >>> mydict['Product'] 'Enterprise Manager' >>> mydict2 = {'Purpose':'Alerts', 'Size':'100GB'} >>> mydict.update(mydict2) >>> mydict {'Product': 'Enterprise Manager', 'Vendor': 'Oracle', 'CLI': 'EM CLI', 'Acronym': 'EM', 'Size': '100GB', 'Purpose': 'Alerts'} >>> for a, b in mydict.items(): print('Key: ' + a + 'nValue: ' + b + 'n') Key: Product Value: Enterprise Manager Key: Vendor Value: Oracle Key: CLI Value: EM CLI Key: Acronym Value: EM Key: Size Value: 100GB Key: Purpose Value: Alerts
  29. 29. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org >>> mydict = {'Product':'Enterprise Manager', 'Vendor':'Oracle', 'Acronym':'EM', 'CLI':'EM CLI'} Dictionaries (Hashes) Target Properties
  30. 30. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org >>> mydict['Product'] 'Enterprise Manager' Dictionaries (Hashes) Target Properties
  31. 31. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org >>> mydict2 = {'Purpose':'Alerts', 'Size':'100GB'} Dictionaries (Hashes) Target Properties
  32. 32. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org >>> mydict.update(mydict2) Dictionaries (Hashes) Target Properties
  33. 33. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org >>> mydict {'Product': 'Enterprise Manager‘, 'Vendor': 'Oracle', 'CLI': 'EM CLI', 'Acronym': 'EM', 'Size': '100GB', 'Purpose': 'Alerts'} Dictionaries (Hashes) Target Properties
  34. 34. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org >>> for a, b in mydict.items(): print('Key: ' + a + 'nValue: ' + b + 'n') Dictionaries (Hashes) Target Properties
  35. 35. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org Key: Vendor Value: Oracle Key: CLI Value: EM CLI Key: Acronym Value: EM Key: Size Value: 100GB Key: Purpose Value: Alerts Dictionaries (Hashes) Target Properties
  36. 36. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org >>> mydict = {'Product':'Enterprise Manager', 'Vendor':'Oracle', 'Acronym':'EM', 'CLI':'EM CLI'} >>> mydict['Product'] 'Enterprise Manager' >>> mydict2 = {'Purpose':'Alerts', 'Size':'100GB'} >>> mydict.update(mydict2) >>> mydict {'Product': 'Enterprise Manager', 'Vendor': 'Oracle', 'CLI': 'EM CLI', 'Acronym': 'EM', 'Size': '100GB', 'Purpose': 'Alerts'} >>> for a, b in mydict.items(): print('Key: ' + a + 'nValue: ' + b + 'n') Key: Product Value: Enterprise Manager Key: Vendor Value: Oracle Key: CLI Value: EM CLI Key: Acronym Value: EM Key: Size Value: 100GB Key: Purpose Value: Alerts Dictionaries (Hashes) Target Properties
  37. 37. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgExamples • Logon Script • Text Mode • JSON Mode • Update Properties Function • Class
  38. 38. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org from emcli import * def myLogin(): set_client_property('EMCLI_OMS_URL', 'https://em12cr3.example.com:7802/em') set_client_property('EMCLI_TRUSTALL', 'true') login(username='sysman') myLogin() Logon Script
  39. 39. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org [oracle~] export JYTHONPATH=/home/oracle/scripts [oracle~] $ORACLE_HOME/bin/emcli emcli>import start Enter password : ********** emcli> Logon Script
  40. 40. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgTEXT Mode emcli>set_client_property('EMCLI_OUTPUT_TYPE', 'TEXT') emcli>str(get_client_property('EMCLI_OUTPUT_TYPE')) 'TEXT' emcli>get_targets().isJson() False emcli>type(get_targets().out()) <type 'unicode'> emcli>type(get_targets().out().splitlines()) <type 'list'> emcli>get_targets() Status Status Target Type Target Name ID 4 Agent Unreachab host em12cr3.example.com le emcli>linenum = 0 emcli>for i in get_targets().out().splitlines()[0:4]: linenum += 1 print('Linenum ' + str(linenum) + ': ' + i) Linenum 1: Status Status Target Type Target Name Linenum 2: ID Linenum 3: 4 Agent Unreachab host em12cr3.example.com Linenum 4: le
  41. 41. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgTEXT Mode emcli>set_client_property('EMCLI_OUTPUT_TYPE', 'TEXT')
  42. 42. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgTEXT Mode emcli>str(get_client_property('EMCLI_OUTPUT_TYPE')) 'TEXT'
  43. 43. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgTEXT Mode emcli>get_targets().isJson() False
  44. 44. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgTEXT Mode emcli>type(get_targets().out()) <type 'unicode'>
  45. 45. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgTEXT Mode emcli>type(get_targets().out().splitlines()) <type 'list'>
  46. 46. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgTEXT Mode emcli>get_targets() Status Status Target Type Target Name ID 4 Agent Unreachab host em12cr3.example.com le
  47. 47. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgTEXT Mode emcli>linenum = 0 emcli>for i in get_targets().out().splitlines()[0:4]: linenum += 1 print('Linenum ' + str(linenum) + ': ' + i) Linenum 1: Status Status Target Type Target Name Linenum 2: ID Linenum 3: 4 Agent Unreachab host em12cr3.example.com Linenum 4: le
  48. 48. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgTEXT Mode emcli>set_client_property('EMCLI_OUTPUT_TYPE', 'TEXT') emcli>str(get_client_property('EMCLI_OUTPUT_TYPE')) 'TEXT' emcli>get_targets().isJson() False emcli>type(get_targets().out()) <type 'unicode'> emcli>type(get_targets().out().splitlines()) <type 'list'> emcli>get_targets() Status Status Target Type Target Name ID 4 Agent Unreachab host em12cr3.example.com le emcli>linenum = 0 emcli>for i in get_targets().out().splitlines()[0:4]: linenum += 1 print('Linenum ' + str(linenum) + ': ' + i) Linenum 1: Status Status Target Type Target Name Linenum 2: ID Linenum 3: 4 Agent Unreachab host em12cr3.example.com Linenum 4: le
  49. 49. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgJSON Mode emcli>set_client_property('EMCLI_OUTPUT_TYPE', 'JSON') emcli>str(get_client_property('EMCLI_OUTPUT_TYPE')) 'JSON' emcli>get_targets().isJson() True emcli>type(get_targets().out()) <type 'dict'> emcli>type(get_targets().out()['data']) <type 'list'> emcli>get_targets().out()['data'][0] {'Status': 'Agent Unreachable', 'Target Name': 'em12cr3.example.com', 'Status ID': '4', 'Warning': '0', 'Critical': '0', 'Target Type': 'host'} emcli>for i in get_targets().out()['data']: print('Target: ' + i['Target Name']) Target: em12cr3.example.com Target: /EMGC_GCDomain/GCDomain/EMGC_OMS1/emgc Target: /EMGC_GCDomain/GCDomain/EMGC_OMS1/OCMRepeater
  50. 50. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgJSON Mode emcli>set_client_property('EMCLI_OUTPUT_TYPE', 'JSON')
  51. 51. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgJSON Mode emcli>str(get_client_property('EMCLI_OUTPUT_TYPE')) 'JSON'
  52. 52. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgJSON Mode emcli>get_targets().isJson() True
  53. 53. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgJSON Mode emcli>type(get_targets().out()) <type 'dict'>
  54. 54. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgJSON Mode emcli>type(get_targets().out()['data']) <type 'list'>
  55. 55. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgJSON Mode emcli>get_targets().out()['data'][0] {'Status': 'Agent Unreachable', 'Target Name': 'em12cr3.example.com', 'Status ID': '4', 'Warning': '0', 'Critical': '0', 'Target Type': 'host'}
  56. 56. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgJSON Mode emcli>for i in get_targets().out()['data']: print('Target: ' + i['Target Name']) Target: em12cr3.example.com Target: /EMGC_GCDomain/GCDomain/EMGC_OMS1/emgc Target: /EMGC_GCDomain/GCDomain/EMGC_OMS1/OCMRepeater
  57. 57. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgJSON Mode emcli>set_client_property('EMCLI_OUTPUT_TYPE', 'JSON') emcli>str(get_client_property('EMCLI_OUTPUT_TYPE')) 'JSON' emcli>get_targets().isJson() True emcli>type(get_targets().out()) <type 'dict'> emcli>type(get_targets().out()['data']) <type 'list'> emcli>get_targets().out()['data'][0] {'Status': 'Agent Unreachable', 'Target Name': 'em12cr3.example.com', 'Status ID': '4', 'Warning': '0', 'Critical': '0', 'Target Type': 'host'} emcli>for i in get_targets().out()['data']: print('Target: ' + i['Target Name']) Target: em12cr3.example.com Target: /EMGC_GCDomain/GCDomain/EMGC_OMS1/emgc Target: /EMGC_GCDomain/GCDomain/EMGC_OMS1/OCMRepeater
  58. 58. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgUpdate Properties emcli>myprops = {'LifeCycle Status':'Development', 'Location':'COLO'} emcli>set_client_property('EMCLI_OUTPUT_TYPE', 'JSON') emcli>mytargs = list(resource='Targets').out()['data'] emcli>mytargprops = list(resource='TargetProperties').out()['data'] emcli>for targ in mytargs: if targ['TARGET_TYPE'] == 'oracle_database' and 'em12cr3' in targ['TARGET_NAME']: print(targ['TARGET_NAME']) orcl_em12cr3.example.com emcli>for targ in mytargs: if 'oracle_database' in targ['TARGET_TYPE'] and 'em12cr3' in targ['TARGET_NAME']: target_name = targ['TARGET_NAME'] target_type = targ['TARGET_TYPE'] for propkey, propvalue in myprops.items(): myrec = target_name + ':' + target_type + ':' + propkey + ':' + propvalue set_target_property_value(property_records=myrec) Properties updated successfully Properties updated successfully
  59. 59. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgUpdate Properties emcli>myprops = { 'LifeCycle Status':'Development', 'Location':'COLO'}
  60. 60. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgUpdate Properties emcli>set_client_property( 'EMCLI_OUTPUT_TYPE', 'JSON')
  61. 61. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgUpdate Properties emcli>mytargs = list( resource='Targets').out()['data']
  62. 62. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgUpdate Properties emcli>mytargprops = list( resource='TargetProperties' ).out()['data']
  63. 63. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgUpdate Properties emcli>for targ in mytargs: if targ['TARGET_TYPE'] == 'oracle_database' and 'em12cr3' in targ['TARGET_NAME']: print(targ['TARGET_NAME']) orcl_em12cr3.example.com
  64. 64. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgUpdate Properties emcli>for targ in mytargs: if 'oracle_database' in targ['TARGET_TYPE'] and 'em12cr3' in targ['TARGET_NAME']:
  65. 65. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgUpdate Properties target_name = targ['TARGET_NAME'] target_type = targ['TARGET_TYPE']
  66. 66. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgUpdate Properties for propkey, propvalue in myprops.items():
  67. 67. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgUpdate Properties for propkey, propvalue in myprops.items(): myrec = target_name + ':' + target_type + ':' + propkey + ':' + propvalue
  68. 68. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgUpdate Properties for propkey, propvalue in myprops.items(): set_target_property_value( property_records=myrec) Properties updated successfully Properties updated successfully
  69. 69. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgUpdate Properties emcli>myprops = {'LifeCycle Status':'Development', 'Location':'COLO'} emcli>set_client_property('EMCLI_OUTPUT_TYPE', 'JSON') emcli>mytargs = list(resource='Targets').out()['data'] emcli>mytargprops = list(resource='TargetProperties').out()['data'] emcli>for targ in mytargs: if targ['TARGET_TYPE'] == 'oracle_database' and 'em12cr3' in targ['TARGET_NAME']: print(targ['TARGET_NAME']) orcl_em12cr3.example.com emcli>for targ in mytargs: if 'oracle_database' in targ['TARGET_TYPE'] and 'em12cr3' in targ['TARGET_NAME']: target_name = targ['TARGET_NAME'] target_type = targ['TARGET_TYPE'] for propkey, propvalue in myprops.items(): myrec = target_name + ':' + target_type + ':' + propkey + ':' + propvalue set_target_property_value(property_records=myrec) Properties updated successfully Properties updated successfully
  70. 70. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgQuery Target Properties emcli>mytargprops = list(resource='TargetProperties').out()['data'] emcli>for i in mytargprops: if i['TARGET_TYPE'] == 'oracle_database' and i['TARGET_NAME'] == 'orcl_em12cr3.example.com' and 'orcl_gtp' in i['PROPERTY_NAME']: print([i['PROPERTY_NAME'], i['PROPERTY_VALUE']]) ['orcl_gtp_os', 'Linux'] ['orcl_gtp_platform', 'x86_64'] ['orcl_gtp_target_version', '12.1.0.1.0'] ['orcl_gtp_location', 'COLO'] ['orcl_gtp_lifecycle_status', 'Development']
  71. 71. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgQuery Target Properties emcli>mytargprops = list( resource='TargetProperties' ).out()['data']
  72. 72. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgQuery Target Properties emcli>for i in mytargprops: if i['TARGET_TYPE'] == 'oracle_database' and i['TARGET_NAME'] == 'orcl_em12cr3.example.com' and 'orcl_gtp' in i['PROPERTY_NAME']: print([i['PROPERTY_NAME‘ ], i['PROPERTY_VALUE']])
  73. 73. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgQuery Target Properties ['orcl_gtp_os', 'Linux'] ['orcl_gtp_platform', 'x86_64'] ['orcl_gtp_target_version', '12.1.0.1.0'] ['orcl_gtp_location', 'COLO'] ['orcl_gtp_lifecycle_status', 'Development']
  74. 74. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgQuery Target Properties emcli>mytargprops = list(resource='TargetProperties').out()['data'] emcli>for i in mytargprops: if i['TARGET_TYPE'] == 'oracle_database' and i['TARGET_NAME'] == 'orcl_em12cr3.example.com' and 'orcl_gtp' in i['PROPERTY_NAME']: print([i['PROPERTY_NAME'], i['PROPERTY_VALUE']]) ['orcl_gtp_os', 'Linux'] ['orcl_gtp_platform', 'x86_64'] ['orcl_gtp_target_version', '12.1.0.1.0'] ['orcl_gtp_location', 'COLO'] ['orcl_gtp_lifecycle_status', 'Development']
  75. 75. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses import emcli import re emcli.set_client_property('EMCLI_OUTPUT_TYPE', 'JSON') class mySetProperties(): def __init__(self, filter='.*'): self.targs = [] self.filt(filter) def filt(self, filter): self.targs = [] __compfilt = re.compile(filter) for __inttarg in emcli.list(resource='Targets' ).out()['data']: if __compfilt.search(__inttarg['TARGET_NAME']): self.targs.append(__inttarg) def show(self): self.targprops = emcli.list( resource='TargetProperties').out()['data'] print('%-5s%-40s%s' % (' ', 'TARGET_TYPE'.ljust(40, '.'), 'TARGET_NAME')) print('%-15s%-30s%sn%sn' % (' ', 'PROPERTY_NAME'.ljust(30, '.'), 'PROPERTY_VALUE', '=' * 80)) for __inttarg in self.targs: print('%-5s%-40s%s' % (' ', __inttarg['TARGET_TYPE'].ljust(40, '.'), __inttarg['TARGET_NAME'])) self.__showprops(__inttarg['TARGET_GUID']) print('') def setprops(self, props): __delim = '@#&@#&&' __subseparator = 'property_records=' + __delim for __inttarg in self.targs: for __propkey, __propvalue in props.items(): __property_records = __inttarg['TARGET_NAME'] + __delim + __inttarg['TARGET_TYPE'] + __delim + __propkey + __delim + __propvalue print('Target: ' + __inttarg['TARGET_NAME'] + ' (' + __inttarg['TARGET_TYPE'] + ')ntProperty: ‘ +__propkey + 'ntValue: ' + __propvalue + 'n') emcli.set_target_property_value( subseparator=__subseparator, property_records=__property_records) def __showprops(self, guid): for __inttargprops in self.targprops: __intpropname = __inttargprops['PROPERTY_NAME'].split('_') if (__inttargprops['TARGET_GUID']) == guid and ( __intpropname[0:2] == ['orcl', 'gtp']): print('%-15s%-30s%s' % (' ', ' '.join(__intpropname[2:]).ljust(30, '.'), __inttargprops['PROPERTY_VALUE']))
  76. 76. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses import emcli import re emcli.set_client_property('EMCLI_OUTPUT_TYPE', 'JSON') class mySetProperties(): def __init__(self, filter='.*'): self.targs = [] self.filt(filter) def filt(self, filter): self.targs = [] __compfilt = re.compile(filter) for __inttarg in emcli.list(resource='Targets' ).out()['data']: if __compfilt.search(__inttarg['TARGET_NAME']): self.targs.append(__inttarg) def show(self): self.targprops = emcli.list( resource='TargetProperties').out()['data'] print('%-5s%-40s%s' % (' ', 'TARGET_TYPE'.ljust(40, '.'), 'TARGET_NAME')) print('%-15s%-30s%sn%sn' % (' ', 'PROPERTY_NAME'.ljust(30, '.'), 'PROPERTY_VALUE', '=' * 80)) for __inttarg in self.targs: print('%-5s%-40s%s' % (' ', __inttarg['TARGET_TYPE'].ljust(40, '.'), __inttarg['TARGET_NAME'])) self.__showprops(__inttarg['TARGET_GUID']) print('') def setprops(self, props): __delim = '@#&@#&&' __subseparator = 'property_records=' + __delim for __inttarg in self.targs: for __propkey, __propvalue in props.items(): __property_records = __inttarg['TARGET_NAME'] + __delim + __inttarg['TARGET_TYPE'] + __delim + __propkey + __delim + __propvalue print('Target: ' + __inttarg['TARGET_NAME'] + ' (' + __inttarg['TARGET_TYPE'] + ')ntProperty: ‘ +__propkey + 'ntValue: ' + __propvalue + 'n') emcli.set_target_property_value( subseparator=__subseparator, property_records=__property_records) def __showprops(self, guid): for __inttargprops in self.targprops: __intpropname = __inttargprops['PROPERTY_NAME'].split('_') if (__inttargprops['TARGET_GUID']) == guid and ( __intpropname[0:2] == ['orcl', 'gtp']): print('%-15s%-30s%s' % (' ', ' '.join(__intpropname[2:]).ljust(30, '.'), __inttargprops['PROPERTY_VALUE']))
  77. 77. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses import emcli import re emcli.set_client_property( 'EMCLI_OUTPUT_TYPE', 'JSON')
  78. 78. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses class mySetProperties():
  79. 79. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses import emcli import re emcli.set_client_property('EMCLI_OUTPUT_TYPE', 'JSON') class mySetProperties(): def __init__(self, filter='.*'): self.targs = [] self.filt(filter) def filt(self, filter): self.targs = [] __compfilt = re.compile(filter) for __inttarg in emcli.list(resource='Targets' ).out()['data']: if __compfilt.search(__inttarg['TARGET_NAME']): self.targs.append(__inttarg) def show(self): self.targprops = emcli.list( resource='TargetProperties').out()['data'] print('%-5s%-40s%s' % (' ', 'TARGET_TYPE'.ljust(40, '.'), 'TARGET_NAME')) print('%-15s%-30s%sn%sn' % (' ', 'PROPERTY_NAME'.ljust(30, '.'), 'PROPERTY_VALUE', '=' * 80)) for __inttarg in self.targs: print('%-5s%-40s%s' % (' ', __inttarg['TARGET_TYPE'].ljust(40, '.'), __inttarg['TARGET_NAME'])) self.__showprops(__inttarg['TARGET_GUID']) print('') def setprops(self, props): __delim = '@#&@#&&' __subseparator = 'property_records=' + __delim for __inttarg in self.targs: for __propkey, __propvalue in props.items(): __property_records = __inttarg['TARGET_NAME'] + __delim + __inttarg['TARGET_TYPE'] + __delim + __propkey + __delim + __propvalue print('Target: ' + __inttarg['TARGET_NAME'] + ' (' + __inttarg['TARGET_TYPE'] + ')ntProperty: ‘ +__propkey + 'ntValue: ' + __propvalue + 'n') emcli.set_target_property_value( subseparator=__subseparator, property_records=__property_records) def __showprops(self, guid): for __inttargprops in self.targprops: __intpropname = __inttargprops['PROPERTY_NAME'].split('_') if (__inttargprops['TARGET_GUID']) == guid and ( __intpropname[0:2] == ['orcl', 'gtp']): print('%-15s%-30s%s' % (' ', ' '.join(__intpropname[2:]).ljust(30, '.'), __inttargprops['PROPERTY_VALUE']))
  80. 80. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses def __init__(self, filter='.*'):
  81. 81. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses self.targs = [] self.filt(filter)
  82. 82. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses def __init__(self, filter='.*'): self.targs = [] self.filt(filter)
  83. 83. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses import emcli import re emcli.set_client_property('EMCLI_OUTPUT_TYPE', 'JSON') class mySetProperties(): def __init__(self, filter='.*'): self.targs = [] self.filt(filter) def filt(self, filter): self.targs = [] __compfilt = re.compile(filter) for __inttarg in emcli.list(resource='Targets' ).out()['data']: if __compfilt.search(__inttarg['TARGET_NAME']): self.targs.append(__inttarg) def show(self): self.targprops = emcli.list( resource='TargetProperties').out()['data'] print('%-5s%-40s%s' % (' ', 'TARGET_TYPE'.ljust(40, '.'), 'TARGET_NAME')) print('%-15s%-30s%sn%sn' % (' ', 'PROPERTY_NAME'.ljust(30, '.'), 'PROPERTY_VALUE', '=' * 80)) for __inttarg in self.targs: print('%-5s%-40s%s' % (' ', __inttarg['TARGET_TYPE'].ljust(40, '.'), __inttarg['TARGET_NAME'])) self.__showprops(__inttarg['TARGET_GUID']) print('') def setprops(self, props): __delim = '@#&@#&&' __subseparator = 'property_records=' + __delim for __inttarg in self.targs: for __propkey, __propvalue in props.items(): __property_records = __inttarg['TARGET_NAME'] + __delim + __inttarg['TARGET_TYPE'] + __delim + __propkey + __delim + __propvalue print('Target: ' + __inttarg['TARGET_NAME'] + ' (' + __inttarg['TARGET_TYPE'] + ')ntProperty: ‘ +__propkey + 'ntValue: ' + __propvalue + 'n') emcli.set_target_property_value( subseparator=__subseparator, property_records=__property_records) def __showprops(self, guid): for __inttargprops in self.targprops: __intpropname = __inttargprops['PROPERTY_NAME'].split('_') if (__inttargprops['TARGET_GUID']) == guid and ( __intpropname[0:2] == ['orcl', 'gtp']): print('%-15s%-30s%s' % (' ', ' '.join(__intpropname[2:]).ljust(30, '.'), __inttargprops['PROPERTY_VALUE']))
  84. 84. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses def filt(self, filter): self.targs = [] __compfilt = re.compile(filter)
  85. 85. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses for __inttarg in emcli.list( resource='Targets' ).out()['data']:
  86. 86. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses for __inttarg in emcli.list(resource='Targets').out()['data']: if __compfilt.search( __inttarg['TARGET_NAME']): self.targs.append(__inttarg)
  87. 87. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses def filt(self, filter): self.targs = [] __compfilt = re.compile(filter) for __inttarg in emcli.list( resource='Targets').out()['data']: if __compfilt.search( __inttarg['TARGET_NAME']): self.targs.append(__inttarg)
  88. 88. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses import emcli import re emcli.set_client_property('EMCLI_OUTPUT_TYPE', 'JSON') class mySetProperties(): def __init__(self, filter='.*'): self.targs = [] self.filt(filter) def filt(self, filter): self.targs = [] __compfilt = re.compile(filter) for __inttarg in emcli.list(resource='Targets' ).out()['data']: if __compfilt.search(__inttarg['TARGET_NAME']): self.targs.append(__inttarg) def show(self): self.targprops = emcli.list( resource='TargetProperties').out()['data'] print('%-5s%-40s%s' % (' ', 'TARGET_TYPE'.ljust(40, '.'), 'TARGET_NAME')) print('%-15s%-30s%sn%sn' % (' ', 'PROPERTY_NAME'.ljust(30, '.'), 'PROPERTY_VALUE', '=' * 80)) for __inttarg in self.targs: print('%-5s%-40s%s' % (' ', __inttarg['TARGET_TYPE'].ljust(40, '.'), __inttarg['TARGET_NAME'])) self.__showprops(__inttarg['TARGET_GUID']) print('') def setprops(self, props): __delim = '@#&@#&&' __subseparator = 'property_records=' + __delim for __inttarg in self.targs: for __propkey, __propvalue in props.items(): __property_records = __inttarg['TARGET_NAME'] + __delim + __inttarg['TARGET_TYPE'] + __delim + __propkey + __delim + __propvalue print('Target: ' + __inttarg['TARGET_NAME'] + ' (' + __inttarg['TARGET_TYPE'] + ')ntProperty: ‘ +__propkey + 'ntValue: ' + __propvalue + 'n') emcli.set_target_property_value( subseparator=__subseparator, property_records=__property_records) def __showprops(self, guid): for __inttargprops in self.targprops: __intpropname = __inttargprops['PROPERTY_NAME'].split('_') if (__inttargprops['TARGET_GUID']) == guid and ( __intpropname[0:2] == ['orcl', 'gtp']): print('%-15s%-30s%s' % (' ', ' '.join(__intpropname[2:]).ljust(30, '.'), __inttargprops['PROPERTY_VALUE']))
  89. 89. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses def show(self): self.targprops = emcli.list( resource='TargetProperties' ).out()['data']
  90. 90. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses print('%-5s%-40s%s' % (' ', 'TARGET_TYPE'.ljust(40, '.'), 'TARGET_NAME')) print('%-15s%-30s%sn%sn' % (' ', 'PROPERTY_NAME'.ljust(30, '.'), 'PROPERTY_VALUE', '=' * 80)) TARGET_TYPE.....................TARGET_NAME PROPERTY_NAME.........PROPERTY_VALUE =========================================================================
  91. 91. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses for __inttarg in self.targs: print('%-5s%-40s%s' % (' ', __inttarg['TARGET_TYPE'].ljust(40, '.'), __inttarg['TARGET_NAME'])) self.__showprops(__inttarg['TARGET_GUID']) print('') oracle_dbsys....................orcl_em12cr3.example.com_sys
  92. 92. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses def show(self): self.targprops = emcli.list( resource='TargetProperties').out()['data'] print('%-5s%-40s%s' % (' ', 'TARGET_TYPE'.ljust(40, '.'), 'TARGET_NAME')) print('%-15s%-30s%sn%sn' % (' ', 'PROPERTY_NAME'.ljust(30, '.'), 'PROPERTY_VALUE', '=' * 80)) for __inttarg in self.targs: print('%-5s%-40s%s' % (' ', __inttarg['TARGET_TYPE'].ljust(40, '.'), __inttarg['TARGET_NAME'])) self.__showprops(__inttarg['TARGET_GUID']) print('')
  93. 93. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses import emcli import re emcli.set_client_property('EMCLI_OUTPUT_TYPE', 'JSON') class mySetProperties(): def __init__(self, filter='.*'): self.targs = [] self.filt(filter) def filt(self, filter): self.targs = [] __compfilt = re.compile(filter) for __inttarg in emcli.list(resource='Targets' ).out()['data']: if __compfilt.search(__inttarg['TARGET_NAME']): self.targs.append(__inttarg) def show(self): self.targprops = emcli.list( resource='TargetProperties').out()['data'] print('%-5s%-40s%s' % (' ', 'TARGET_TYPE'.ljust(40, '.'), 'TARGET_NAME')) print('%-15s%-30s%sn%sn' % (' ', 'PROPERTY_NAME'.ljust(30, '.'), 'PROPERTY_VALUE', '=' * 80)) for __inttarg in self.targs: print('%-5s%-40s%s' % (' ', __inttarg['TARGET_TYPE'].ljust(40, '.'), __inttarg['TARGET_NAME'])) self.__showprops(__inttarg['TARGET_GUID']) print('') def setprops(self, props): __delim = '@#&@#&&' __subseparator = 'property_records=' + __delim for __inttarg in self.targs: for __propkey, __propvalue in props.items(): __property_records = __inttarg['TARGET_NAME'] + __delim + __inttarg['TARGET_TYPE'] + __delim + __propkey + __delim + __propvalue print('Target: ' + __inttarg['TARGET_NAME'] + ' (' + __inttarg['TARGET_TYPE'] + ')ntProperty: ‘ +__propkey + 'ntValue: ' + __propvalue + 'n') emcli.set_target_property_value( subseparator=__subseparator, property_records=__property_records) def __showprops(self, guid): for __inttargprops in self.targprops: __intpropname = __inttargprops['PROPERTY_NAME'].split('_') if (__inttargprops['TARGET_GUID']) == guid and ( __intpropname[0:2] == ['orcl', 'gtp']): print('%-15s%-30s%s' % (' ', ' '.join(__intpropname[2:]).ljust(30, '.'), __inttargprops['PROPERTY_VALUE']))
  94. 94. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses def setprops(self, props): __delim = '@#&@#&&' __subseparator = 'property_records=' + __delim
  95. 95. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses for __inttarg in self.targs: for __propkey, __propvalue in props.items():
  96. 96. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses for __inttarg in self.targs: for __propkey, __propvalue in props.items(): __property_records = __inttarg['TARGET_NAME'] + __delim + __inttarg['TARGET_TYPE'] + __delim + __propkey + __delim + __propvalue
  97. 97. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses for __inttarg in self.targs: for __propkey, __propvalue in props.items(): print('Target: ' + __inttarg['TARGET_NAME'] + ' (' + __inttarg['TARGET_TYPE'] + ')ntProperty: ' +__propkey + 'ntValue: ' + __propvalue + 'n')
  98. 98. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses for __inttarg in self.targs: for __propkey, __propvalue in props.items(): emcli.set_target_property_value( subseparator=__subseparator, property_records=__property_records)
  99. 99. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses def setprops(self, props): __delim = '@#&@#&&' __subseparator = 'property_records=' + __delim for __inttarg in self.targs: for __propkey, __propvalue in props.items(): __property_records = __inttarg['TARGET_NAME'] + __delim + __inttarg['TARGET_TYPE'] + __delim + __propkey + __delim + __propvalue print('Target: ' + __inttarg['TARGET_NAME'] + ' (' + __inttarg['TARGET_TYPE'] + ')ntProperty: ‘ +__propkey + 'ntValue: ' + __propvalue + 'n') emcli.set_target_property_value( subseparator=__subseparator, property_records=__property_records)
  100. 100. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses import emcli import re emcli.set_client_property('EMCLI_OUTPUT_TYPE', 'JSON') class mySetProperties(): def __init__(self, filter='.*'): self.targs = [] self.filt(filter) def filt(self, filter): self.targs = [] __compfilt = re.compile(filter) for __inttarg in emcli.list(resource='Targets' ).out()['data']: if __compfilt.search(__inttarg['TARGET_NAME']): self.targs.append(__inttarg) def show(self): self.targprops = emcli.list( resource='TargetProperties').out()['data'] print('%-5s%-40s%s' % (' ', 'TARGET_TYPE'.ljust(40, '.'), 'TARGET_NAME')) print('%-15s%-30s%sn%sn' % (' ', 'PROPERTY_NAME'.ljust(30, '.'), 'PROPERTY_VALUE', '=' * 80)) for __inttarg in self.targs: print('%-5s%-40s%s' % (' ', __inttarg['TARGET_TYPE'].ljust(40, '.'), __inttarg['TARGET_NAME'])) self.__showprops(__inttarg['TARGET_GUID']) print('') def setprops(self, props): __delim = '@#&@#&&' __subseparator = 'property_records=' + __delim for __inttarg in self.targs: for __propkey, __propvalue in props.items(): __property_records = __inttarg['TARGET_NAME'] + __delim + __inttarg['TARGET_TYPE'] + __delim + __propkey + __delim + __propvalue print('Target: ' + __inttarg['TARGET_NAME'] + ' (' + __inttarg['TARGET_TYPE'] + ')ntProperty: ‘ +__propkey + 'ntValue: ' + __propvalue + 'n') emcli.set_target_property_value( subseparator=__subseparator, property_records=__property_records) def __showprops(self, guid): for __inttargprops in self.targprops: __intpropname = __inttargprops['PROPERTY_NAME'].split('_') if (__inttargprops['TARGET_GUID']) == guid and ( __intpropname[0:2] == ['orcl', 'gtp']): print('%-15s%-30s%s' % (' ', ' '.join(__intpropname[2:]).ljust(30, '.'), __inttargprops['PROPERTY_VALUE']))
  101. 101. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses def __showprops(self, guid): for __inttargprops in self.targprops: __intpropname = __inttargprops[ 'PROPERTY_NAME'].split('_')
  102. 102. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses for __inttargprops in self.targprops: if (__inttargprops['TARGET_GUID'] ) == guid and ( __intpropname[0:2] == [ 'orcl', 'gtp']):
  103. 103. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses for __inttargprops in self.targprops: if (__inttargprops['TARGET_GUID‘]) == guid and (__intpropname[0:2] == ['orcl', 'gtp']): print('%-15s%-30s%s' % (' ', ' '.join(__intpropname[2:] ).ljust(30, '.'), __inttargprops[ 'PROPERTY_VALUE']))
  104. 104. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses def __showprops(self, guid): for __inttargprops in self.targprops: __intpropname = __inttargprops[ 'PROPERTY_NAME'].split('_') if (__inttargprops['TARGET_GUID'] ) == guid and ( __intpropname[0:2] == [ 'orcl', 'gtp']): print('%-15s%-30s%s' % (' ', ' '.join(__intpropname[2:] ).ljust(30, '.'), __inttargprops[ 'PROPERTY_VALUE']))
  105. 105. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses import emcli import re emcli.set_client_property('EMCLI_OUTPUT_TYPE', 'JSON') class mySetProperties(): def __init__(self, filter='.*'): self.targs = [] self.filt(filter) def filt(self, filter): self.targs = [] __compfilt = re.compile(filter) for __inttarg in emcli.list(resource='Targets' ).out()['data']: if __compfilt.search(__inttarg['TARGET_NAME']): self.targs.append(__inttarg) def show(self): self.targprops = emcli.list( resource='TargetProperties').out()['data'] print('%-5s%-40s%s' % (' ', 'TARGET_TYPE'.ljust(40, '.'), 'TARGET_NAME')) print('%-15s%-30s%sn%sn' % (' ', 'PROPERTY_NAME'.ljust(30, '.'), 'PROPERTY_VALUE', '=' * 80)) for __inttarg in self.targs: print('%-5s%-40s%s' % (' ', __inttarg['TARGET_TYPE'].ljust(40, '.'), __inttarg['TARGET_NAME'])) self.__showprops(__inttarg['TARGET_GUID']) print('') def setprops(self, props): __delim = '@#&@#&&' __subseparator = 'property_records=' + __delim for __inttarg in self.targs: for __propkey, __propvalue in props.items(): __property_records = __inttarg['TARGET_NAME'] + __delim + __inttarg['TARGET_TYPE'] + __delim + __propkey + __delim + __propvalue print('Target: ' + __inttarg['TARGET_NAME'] + ' (' + __inttarg['TARGET_TYPE'] + ')ntProperty: ‘ +__propkey + 'ntValue: ' + __propvalue + 'n') emcli.set_target_property_value( subseparator=__subseparator, property_records=__property_records) def __showprops(self, guid): for __inttargprops in self.targprops: __intpropname = __inttargprops['PROPERTY_NAME'].split('_') if (__inttargprops['TARGET_GUID']) == guid and ( __intpropname[0:2] == ['orcl', 'gtp']): print('%-15s%-30s%s' % (' ', ' '.join(__intpropname[2:]).ljust(30, '.'), __inttargprops['PROPERTY_VALUE']))
  106. 106. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses emcli>myprops = {'LifeCycle Status':'Development', 'Location':'COLO'} emcli>from mySetProperties import mySetProperties
  107. 107. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses emcli>mySetProperties(filter= '^orcl_em12cr3' ).show() TARGET_TYPE.....................TARGET_NAME PROPERTY_NAME.........PROPERTY_VALUE ========================================================================= oracle_dbsys....................orcl_em12cr3.example.com_sys oracle_database.................orcl_em12cr3.example.com os....................Linux platform..............x86_64 target version........12.1.0.1.0
  108. 108. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses emcli>mySetProperties(filter= '^orcl_em12cr3.*[^(_sys)]$' ).show() TARGET_TYPE.....................TARGET_NAME PROPERTY_NAME.........PROPERTY_VALUE ========================================================================= oracle_database.................orcl_em12cr3.example.com os....................Linux platform..............x86_64 target version........12.1.0.1.0
  109. 109. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses emcli>mysetp = mySetProperties( '^orcl_em12cr3.*[^(_sys)]$')
  110. 110. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses emcli>mysetp.setprops(myprops) Target: orcl_em12cr3.example.com (oracle_database) Property: Location Value: COLO Target: orcl_em12cr3.example.com (oracle_database) Property: LifeCycle Status Value: Development
  111. 111. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.orgClasses emcli>mysetp.show() TARGET_TYPE.......................TARGET_NAME PROPERTY_NAME...........PROPERTY_VALUE ================================================================= oracle_database...................orcl_em12cr3.example.com os......................Linux platform................x86_64 target version..........12.1.0.1.0 location................COLO lifecycle status........Development
  112. 112. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org
  113. 113. #C14LV #EM12c #EMCLI #Python @Seth_M_Miller SethMiller.SM@gmail.com http://sethmiller.org Thank You!

×