Tuesday, April 7, 2015

Viewing the Jabber-Config.xml on loaded CUCM TFTP Servers

Have you ever needed to review the jabber-config.xml file  that is loaded on a system to confirm which options or parameters have been selected
There is an easy way to do this by typing the following into a browser

Wednesday, February 18, 2015

IP SLA

IP SLA is a function of Cisco’s IOS enabling you to analyze a Service Level Agreement (SLA) for an IP application or service. IP SLAs use active traffic-monitoring to continuously monitor traffic across the network. This is very different from SNMP or Netflow data which give you more volume oriented statistics. Many different metrics can be analyzed using IP SLA, here is a break down of a few.
  • UDP Jitter – Probably the most used operation in all of IP SLA. This IP SLA generates UDP traffic and measures Round-trip Delay, One-way Delay, One-way Jitter, One-way Packet Loss, and overall Connectivity.
  • ICMP Path Jitter – Hop-by-hop Jitter, Packet Loss, and Delay.
  • UDP Jitter for VoIP – Enhanced test for VoIP monitoring. It can simulate various codecs and spits out voice quality scores (MOS, and ICPIF). Also shows us Round-trip Delay, One-way Delay, One-way Jitter, and One-way Packet Loss.
  • UDP Echo – Round-trip Delay for UDP traffic.
  • ICMP Echo – Round-trip Delay, full path.
  • ICMP Path Echo – Round-trip Delay and Hop-by-hop round trip delay.
  • HTTP – Round-trip time using simulated http traffic.
  • TCP Connect – Allows us to sample the time to connect to a target using TCP.
  • FTP – Round-trip time for file transfers.
  • DHCP – Round-trip time for dynamic host configuration.
  • Frame-Relay –Round-trip Delay, and the Frame Delivery Ratio. Mostly used for circuit availability.

IP SLA Configuration

There are 2 parts to the IP SLA configuration. Our testing source, and the responder. Typically our responder is a device local to the data center, while the test host is device at a remote site. The test host sends data to the responder and the responder sends a reply back. The configuration for the responder is nothing but really, really simple… 
ip sla responder
Seriously. Now lets take a look at the configuration of the testing source. Any questions I don’t answer here should be easily available via IOS context help… Here is an example I’m using in production.
ip sla 10                                                        ! New IP SLA Instance #10
  udp-jitter 10.1.1.1 16800 source-ip 10.2.2.2 codec g711ulaw    ! udp jitter w/Voice codec
  tos 184                                                        ! TOS bit, using EF here
  frequency 300                                                  ! testing interval
ip sla schedule 10 life forever start-time now                   ! start now, never stop
So, what does this get us? Here are the stats output by our IP SLA source.. 
Router#sh ip sla statistics 10    ! Omit the # to view all SLA stats.
IPSLAs Latest Operation Statistics

IPSLA operation id: 10
Type of operation: udp-jitter
        Latest RTT: 42 milliseconds
Latest operation start time: 18:28:06.603 UTC Thu May 5 2011
Latest operation return code: OK
RTT Values:
        Number Of RTT: 1000             RTT Min/Avg/Max: 39/42/154 milliseconds
Latency one-way time:
        Number of Latency one-way Samples: 1000
        Source to Destination Latency one way Min/Avg/Max: 25/26/41 milliseconds
        Destination to Source Latency one way Min/Avg/Max: 13/15/127 milliseconds
Jitter Time:
        Number of SD Jitter Samples: 999
        Number of DS Jitter Samples: 999
        Source to Destination Jitter Min/Avg/Max: 0/2/15 milliseconds
        Destination to Source Jitter Min/Avg/Max: 0/2/90 milliseconds
Packet Loss Values:
        Loss Source to Destination: 0           Loss Destination to Source: 0
        Out Of Sequence: 0      Tail Drop: 0
        Packet Late Arrival: 0  Packet Skipped: 0
Voice Score Values:
        Calculated Planning Impairment Factor (ICPIF): 1
MOS score: 4.34
Number of successes: 7
Number of failures: 0
Operation time to live: Forever

Monday, February 16, 2015

Cisco Phone Factory Reset

Factory Reset – “1,2,3,4,5,6,7,8,9,*,0,#”. 

  • Unplug the power from the phone.
  • As you plug it back it, press and hold the “#” key.  If performed correctly, the Headset, Mute, and Speaker buttons in the lower right corner will start to flash in sequence.
  • When those three buttons start flashing in sequence, enter the following code: 1,2,3,4,5,6,7,8,9,*,0,#.  You’ll notice that’s every button on the keypad in sequence from left to right, top to bottom.
  • Phone will display “Upgrading” and erase the configuration.
Don’t worry if you press a key twice on accident.  The phone will still accept the code.  However, you do need to be quick about things.  The phone will only accept the factory reset code for 60 seconds after the Headset, Mute, and Speaker buttons start flashing in sequence.

Tuesday, December 16, 2014

RTMT on MAC - ARCHIVED

AUGNOVAUG
Previous capture4Next capture
201020122014
13 captures
24 Nov 10 - 25 Aug 14

sparklines
CloseHelp
Clip to Evernote

Don't Panic!Real Time Monitoring Tool on Mac OS X

Intro

Apparently this page was the most widely referenced page from my site. I was originally just going to take my site down for about a week while I was migrating but real life got in the way, and time just flew by, and then our daughter was born and I just haven't had the time to work on the site. After a couple of thousand emails (seriously.) I went ahead and put this back on a page for everyones use, and actually updated this with some new steps to follow.

Preparation

Obviously first thing is first. Log into your CUCM and navigate to the plugins page and grab the Cisco Unified CM Real-Time Monitoring Tool - Linux. If you don't have this, please don't email me asking for the file. If you don't have this file, or access to it, then this page is NOT for you. The rest of this walkthrough assumes that you downloaded this to the default ~/Downloads/ directory.

Installation

Open up Terminal.app:

macbookpro:~ ryan$ cd ~/Downloads
macbookpro:Downloads ryan$ chmod +x ./CcmServRtmtPlugin.bin
macbookpro:Downloads ryan$ ./CcmServRtmtPlugin.bin

At this point, you'll run through the installation screens. Just accept the defaults as they normally work for most folks.
   
  
Back in Terminal.app:

macbookpro:Downloads ryan$ cd /Applications/JRtmt
macbookpro:JRtmt ryan$ cp run.sh run.orig.sh
macbookpro:JRtmt ryan$ vim run.sh

This opens run.sh up in vim. Here we'll just change the java that this script is trying to use. You can either change it to just java or you can put the full path to java in place of it. For those of you who are vim challenged, or have no idea what I'm talking about, type the following into vim:

:%s/\.\/jre\/bin/\/usr\/bin/
:wq

Now you'll be back at the command prompt.
Now depending on what version of Java update you are on with your mac, you may or may not run. If you're on an older version (e.g. you haven't updated your Mac in a while) then you may just very well fire up and run just fine. For the rest of us that keep up to date, this should bomb out on us. So go ahead and see which crowd you're hanging out with. If you are on an updated machine, we want the app to bomb on us after the login window, so that it will put the tzupdater.jar file in the current directory. So at your command prompt:

macbookpro:JRtmt ryan$ ./run.sh

Enter your CUCM IP Address, username and password, and the application will bomb on you, which as I said is just fine. If it didn't bomb out on you, and your in RTMT, then keep this page handy as you'll need to start here to get it running again once you update your Mac. You should see something like this at the end of the output in Terminal.app:

2010-11-01 08:22:28,496 [SplashThread] INFO  rtmt.control  - [INFO]Timezone ServerVersion:tzdata2009p
2010-11-01 08:22:28,496 [SplashThread] INFO  rtmt.control  - [INFO]Timezone ClientVersion:tzdata2010l
2010-11-01 08:22:28,496 [SplashThread] INFO  rtmt.control  - [INFO]Timezone isUpdateRequired:true
2010-11-01 08:22:28,678 [SplashThread] INFO  rtmt.control  - [INFO]tzupdater.jar downloaded to:/Applications/JRtmt/tzupdater.jar
java.home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
java.vendor: Apple Inc.
java.version: 1.6.0_22
JRE time zone data version: tzdata2010l
There's no tzdata available for this Java runtime.
macbookpro:JRtmt ryan$ 

To fix this issue, simply run the following command (I'm including the output as well):

macbookpro:JRtmt ryan$ sudo java -Djava.vendor="Sun Microsystems Inc." -jar ./tzupdater.jar -u -f -v
java.home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
java.vendor: Sun Microsystems Inc.
java.version: 1.6.0_22
JRE time zone data version: tzdata2010l
Embedded time zone data version: tzdata2009p
Extracting files... done.
Renaming directories... done.
Validating the new time zone data... done.
Time zone data update is complete.
macbookpro:JRtmt ryan$

That's it!!! Now try and run it again, you'll have to enter your information again for the login window, but afterwords this time you should fire right up into RTMT.

macbookpro:JRtmt ryan$ ./run.sh

Ok. So it runs now. Let's make it so you can run it from the GUI, instead of having to run the shell script every time.
Open up Applescript Editor. Add this single line:

do shell script "cd /Applications/JRtmt; ./run.sh"

Hit the run button and make sure it works for you. Once again, this assumes that you installed to the default location of /Applications/JRtmt. Assuming that it does work for you, click File > Save As, select Application for the File Format and save this wherever you want. Probably in the JRtmt folder would make the most sense, but you can do whatever you want.
That's it. You're done. Have fun.

Friday, August 9, 2013

SQL Statements on CM DB

To determine what users had their phones forwarded. Command line examples of how to do this:

admin: run sql select d.name as device, n.dnorpattern, cfd.cfadestination from device as d inner join devicenumplanmap as dmap on dmap.fkdevice = d.pkid inner join numplan as n on n.pkid=dmap.fknumplan inner join callforwarddynamic as cfd on cfd.fknumplan=n.pkid where (cfd.cfadestination != '')


If you have an interest in seeing stations that are call forwarded to voicemail AND other destinations, then the following query can be used:

admin: run sql select d.name as device, n.dnorpattern, cfd.cfadestination from device as d inner join devicenumplanmap as dmap on dmap.fkdevice = d.pkid inner join numplan as n on n.pkid=dmap.fknumplan inner join callforwarddynamic as cfd on cfd.fknumplan=n.pkid where ((cfd.cfadestination != '') or (cfd.cfaVoicemailEnabled='t'))


If you are looking for a particular number like 17035551212 as the call forward destination, then the following could be used:

admin: run sql select d.name as device, n.dnorpattern, cfd.cfadestination from device as d inner join devicenumplanmap as dmap on dmap.fkdevice = d.pkid inner join numplan as n on n.pkid=dmap.fknumplan inner join callforwarddynamic as cfd on cfd.fknumplan=n.pkid where (cfd.cfadestination = '917035551212')

NOTE: The above assumes that the off net access code of 9

Ref: https://supportforums.cisco.com/thread/2010685

Monday, February 11, 2013

Enable Calendar Presence

When Cisco originally released the Cisco Unified Presence Communicator (CUPC) client several years ago, they provided end-users with the ability to share their calendar presence.
Jabber for Windows, which replaced CUPC, does not provide the same simple way for the end-user to share his/her calendar presence status (e.g. “In a Meeting” or “Available”).
In order for the end-user to “opt-in” to this feature, he/she must login to the Cisco Unified Presence User Options web page (https://[imp server]/cupuser).  Obviously, this is not the most ideal situation.
In order to enable this feature for the end-user, perform the following steps:
  1. SSH into the Cisco Unified Presence Server
  2. Login with the OS administrator ID and the defined password.
  3. From the command prompt enter the following command, substituting “username” for the end-user account being modified:
run sql execute procedure spSetUserCalendaring((select pkid from enduser where userid like ‘username’),’t',’t')
To adjust this setting for multiple users, I leveraged Excel and the concatenate formula as follows:
  • Column A: This column should contain the usernames
  • Column B: =CONCATENATE(“     run sql execute procedure spSetUserCalendaring((select pkid from enduser where userid like ‘”,A2,”‘),’t',’t') “
Take the results from Column B, copy the values and paste into TextWrangler (Mac) or Notepad++ (Windows).  From here, you can copy/paste the commands into the SSH terminal.
If you notice, I added 5 spaces in front of the SQL command. During my testing, I found that some of the initial characters can be cut off when pasting multiple lines into the CLI.