<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.hoenzb
        {mso-style-name:hoenzb;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Wow! Thanks for sharing. <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">---<o:p></o:p></span></p>
<p class="MsoNormal"><b><span style="font-family:"Arial",sans-serif">Lelio Fulgenzi, B.A.</span></b><span style="font-family:"Arial",sans-serif"> | Senior Analyst<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif;color:#333333">Computing and Communications Services</span><span style="font-family:"Arial",sans-serif"> | University of Guelph<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">Room 037 Animal Science & Nutrition Bldg | 50 Stone Rd E | Guelph, ON | N1G 2W1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif">519-824-4120 Ext. 56354 |
<a href="mailto:lelio@uoguelph.ca"><span style="color:#0563C1">lelio@uoguelph.ca</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><a href="http://www.uoguelph.ca/ccs"><span style="font-family:"Arial",sans-serif">www.uoguelph.ca/ccs</span></a><span style="font-family:"Arial",sans-serif;color:#1F497D"> | @UofGCCS on Instagram, Twitter and Facebook<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><img border="0" width="187" height="100" style="width:1.9479in;height:1.0416in" id="Picture_x0020_1" src="cid:image001.png@01D3C2A4.BA7AC730" alt="University of Guelph Cornerstone with Improve Life tagline"><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><b>From:</b> Bill Talley [mailto:btalley@gmail.com] <br>
<b>Sent:</b> Friday, March 23, 2018 12:41 PM<br>
<b>To:</b> Lelio Fulgenzi <lelio@uoguelph.ca><br>
<b>Cc:</b> voyp list, cisco-voip (cisco-voip@puck.nether.net) <cisco-voip@puck.nether.net><br>
<b>Subject:</b> Re: [cisco-voip] building an API box - what do I need?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Here is a link to my full script for anyone who is interested.  The script prompts for a company name and creates a new local directory by that name if it doesn't already exist, then prompts for CUCM version, CUCM Pub IP address, AXL username,
 and AXL password.  The script also uses the AXL and RisPort APIs if anyone is looking for an example of either.<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.iptinfo.com/2018/03/23/querying-cucm-via-axl-risport-api-config-discovery-tool/">https://www.iptinfo.com/2018/03/23/querying-cucm-via-axl-risport-api-config-discovery-tool/</a><o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">The script queries the pub address you entered for CUCM/IMP cluster node names and license utilization, then uses that info to query each node for application version.   Once initial discovery of nodes, versions
 and license utilization is completed, the script presents a menu with options:  9 - Discover All and q - Quit.  If you select option 9, the script will query and captures a list of basic info for configured phones (filtered to SEP devices), gateways, CTI devices
 (route points and ports), hunt devices, and media devices and writes output of each query to a separate worksheet in an excel workbook created with a concatenated name of the company you entered and the current date and time.   <o:p></o:p></p>
<div>
<p class="MsoNormal">Note, I am not a programmer by trade and just started using Python so if anyone has suggestions or corrections, please feel free to share them.  There's some validation and exception handling built in, but I've not fully implemented both
 yet.  I started working on this about a month ago (the script and python in general) and is a work in progress so any feedback is welcome and appreciated.  The script requires zeep, suds-jurko, xlsxwriter and the AXL plugin installed; this is all called out
 in comments in the script.  <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The script does not validate the SSL certs so if you need to do that, you'll want to update the script to validate the CUCM/IMP certs.<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Bill<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, Mar 21, 2018 at 4:03 PM, Bill Talley <<a href="mailto:btalley@gmail.com" target="_blank">btalley@gmail.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal">Hi Lelio,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I just went through the same ordeal a few weeks ago which you're embarking on now.   I'm no expert in this by any means, but know information is also hard to come by and will share whatever I can.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Checkout my notes here, <a href="https://www.iptinfo.com/2018/02/22/querying-cucm-via-axl-using-python-scripts-installing-python/" target="_blank">https://www.iptinfo.com/2018/02/22/querying-cucm-via-axl-using-python-scripts-installing-python/</a>,
 but more importantly check out the links at the bottom of the page.  Those are blogs I used to get started on installing and using Python to utilize AXL to query and modify CUCM.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Here's a link to my sample Python script which will prompt you for a client/directory name, CUCM IP address, CUCM version, CUCM AXL username and CUCM AXL password, then will query for and output a list of phone (basic info) and create a
 csv file containing that list of phones.  I have a more complex script that queries for cluster nodes, software versions, phone devices, hunt devices, gateways, media devices, etc if you're interested in seeing something like that.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.iptinfo.com/2018/02/28/querying-cucm-via-axl-sample-python-script/" target="_blank">https://www.iptinfo.com/2018/02/28/querying-cucm-via-axl-sample-python-script/</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">As far as username and passwords embedded in the script, if you control the machine the script will be executed on, you could create system variables containing that info on the machine, then call the system variables from the script.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Lastly, here's a link to the CUCM AXL developer guides and database dictionaries.  The AXL programming guides tell you the supported search criteria and response data that will be returned.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="https://developer.cisco.com/docs/axl/#previous-versions" target="_blank">https://developer.cisco.com/docs/axl/#previous-versions</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888">Bill<o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<p class="MsoNormal">On Wed, Mar 21, 2018 at 3:17 PM, Lelio Fulgenzi <<a href="mailto:lelio@uoguelph.ca" target="_blank">lelio@uoguelph.ca</a>> wrote:<o:p></o:p></p>
</div>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
I'm going to make a (sad) attempt to try my hand at API usage. You know, running those sweet commands against CUCM or WebEx, etc to make my life easier. I'm hoping that by starting with some simple examples, I can build what I need as time goes on.<br>
<br>
My hope is to build scripts that I can run via CLI, but also create simple web pages with buttons that execute those scripts, with or without arguments. The webpages themselves will be protected appropriately.<br>
<br>
But I'm starting from scratch. I do have a resource that I'm hoping will help out, but I'm wondering, if you were building an api box from scratch, what sort of things would you want (or need) on it to make things run smoothly?<br>
<br>
I'm guessing if I want to automate any of these scripts, I'll have no choice but to store the userID/password either in the script or read from a file. I've asked this before of a few people, but there is no real way to store a password securely and decrypt
 it at time of running the script.<br>
<br>
For interactive scripts, either CLI or web form, do you use the same userID/password, or are you asking for credentials and use those credentials?<br>
<br>
I know... a big ask.<br>
<br>
<br>
---<br>
Lelio Fulgenzi, B.A. | Senior Analyst<br>
Computing and Communications Services | University of Guelph<br>
Room 037 Animal Science & Nutrition Bldg | 50 Stone Rd E | Guelph, ON | N1G 2W1<br>
<a href="tel:519-824-4120%20Ext.%2056354" target="_blank">519-824-4120 Ext. 56354</a> |
<a href="mailto:lelio@uoguelph.ca" target="_blank">lelio@uoguelph.ca</a><mailto:<a href="mailto:lelio@uoguelph.ca" target="_blank">lelio@uoguelph.ca</a>><br>
<br>
<a href="http://www.uoguelph.ca/ccs" target="_blank">www.uoguelph.ca/ccs</a><<a href="http://www.uoguelph.ca/ccs" target="_blank">http://www.uoguelph.ca/ccs</a>> | @UofGCCS on Instagram, Twitter and Facebook<br>
<br>
[University of Guelph Cornerstone with Improve Life tagline]<br>
<br>
<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt">_______________________________________________<br>
cisco-voip mailing list<br>
<a href="mailto:cisco-voip@puck.nether.net" target="_blank">cisco-voip@puck.nether.net</a><br>
<a href="https://puck.nether.net/mailman/listinfo/cisco-voip" target="_blank">https://puck.nether.net/mailman/listinfo/cisco-voip</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>