Tuesday, March 29, 2016

Using Cisco UCCX CUIC as a wallboard and CSCun28885 Tomcat inactivity timeouts

A co-worker of mine was involved in a new Cisco UCCX roll-out where the client was looking to use a CUIC report on a large LED flat screen as a wallboard solution.  After creating the report, running it via a permalink and adjusting screen resolution and Internet Explorer zooming to make the report readable, the client found the result to be satisfactory.  They unfortunately realized that because Cisco Tomcat has a maximum inactivity timeout of 14400 seconds, their new wallboard would break overnight if there was no activity in the call center and CUIC would need to be shutdown and restarted every AM.

You can find some background here:
https://bst.cloudapps.cisco.com/bugsearch/bug/CSCun28885
https://supportforums.cisco.com/discussion/12538621/uccx-cuic-dashboard-timeout
https://supportforums.cisco.com/discussion/12934891/uccx-tomcat-session-timeout-values-can-not-be-updated-cscun28885

From some email exchanges it looked like every 4 hours or AM someone would need to:
  1. Kill Internet Explorer
  2. Start Internet Explorer back up.
  3. Navigate to the CUIC dashboard permalink.
  4. Login to the CUIC dashboard.
Being pressed for time he asked for help and here's the solution, as dirty as it may be, I came up with.

Powershell script to stop IE, start IE, navigate to a web page and log in:

#====================
# Script closes instances of IE,
# opens a new visible instance,
# navigates to a URL
# and logs into CUIC
# NOTE: user name and password stored here in clear text
#
# WebMaxtor
# 03/28/2016
#====================

# Edit this $Url to be the URL or IP address of the site to launch
# This could be the CUIC logon page or a dashboard permalink
# This assumes there will be no challenge to accept certificates
# Typical CUIC logon page URL below as example
$Url = 'https://uccx01.demo-domain.com:8444/cuic/Login.htmx'
# Edit this to be the username
$Username='rmaslanka3'
# Edit this to the corresponding password
$Password='12345'

# Close IE to eliminate timed out reports
#
# option 1:
# Get-Process iexplore | Foreach-Object { $_.CloseMainWindow() }
#
# option 2:
#(New-Object -COM "Shell.Application").Windows() |
#  ? { $_.Name -like "*Internet Explorer*" } |
#  % { $_.Quit() }
#
# option 3:
Get-Process iexplore | Stop-Process

# Wait a few seconds to be safe for processes stop if need be
while ($IE.Busy -eq $true)
{
Start-Sleep -Milliseconds 2000;
}

# Start a visible Internet Explorer instance
$IE = New-Object -com internetexplorer.application;
$IE.visible = $true;
$IE.navigate($url);

# Wait a few seconds and then log on
while ($IE.Busy -eq $true)
{
Start-Sleep -Milliseconds 2000;
}

# fill in the form and click submit button
$IE.Document.getElementById('j_username').value = $Username
$IE.Document.getElementByID('j_password').value=$Password
$IE.Document.getElementById('cuesLoginSubmitButton').Click()


Windows Batch file to make running powershell script easier:

@ECHO OFF
PowerShell.exe -NoProfile -Command "& {Start-Process PowerShell.exe -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -Verb RunAs}"


The beauty of the batch file is if the powershell script and the batch file are named the same except for the file extension (i.e. MyFile.bat and MyFile.ps1) and reside in the same folder, you can just click the BAT file and you are off and running.

There are multiple methods to close IE via powershell and I can't be sure what will work best in your environment so be sure to test the three options or come up with your own.

The final step was then calling the BAT file from Window's Scheduled Tasks on a regular basis to ensure the report was not effected by the Tomcat inactivity timer.


Monday, March 14, 2016

VMware Workstation bridged network ping guest host

For years I've run Cisco UC servers on my laptop via VMware Player or VMware Workstation for testing interesting scenarios outside of production.  My latest laptop sports an Intel i5 with 8 GBs of RAM which is more than enough horsepower to run at least a couple small OVA servers in VMware Workstation 11.

The last time I tried to boot up a CUCM 10.5 server I was surprised to find I couldn't even ping between the host and guest.  The networking was set up pretty simply, used the default bridged VMware adapter and I was certain I used this server before.

The fix was ultimately to disable the DNE LightWeight Filter on the physical adapter on my laptop.  It seems to have been installed recently when I was forced to use Citrix to connect to a clients network remotely.

Below is a screenshot of the ping failures, the DNE Lightweight Filter correctly unchecked.  You hit OK at this point, the adapter resets and you might be in business again.



Good luck. Hope this helps.