08-03-2011 07:03 AM - edited 03-21-2019 04:27 AM
What's happenin forum?
Anyway, I just wanted to share some scripts I managed to get together with the help of others and the interwebz. I manage a large infrastructure of UC520's and UC560's where we have enabled users to dial four digit extensions to reach another user in another office. The way it works is, since most of the offices are on SIP, they have their own DID numbers. An ephone-dn is created in each office for that one user (each user in the infrastructure must have a unique extension). For example, where John Smith belongs to the New York office, he also has an entry in the Los Angeles office:
ephone-dn 222
number 1001 no-reg primary (the no-reg is important is you're running SIP!)
name John Smith
call-forward all 912125551234
Now imagine this exact entry in all the other UC500's. The trouble comes when John Smith is terminated or leaves the company. So procedure calls for the removal of John Smith from each of the UCs, regardless if there is a replacement or not. Of course, this can be a disaster to manage.
This is where the script comes in. Using Perl, it will telnet to each office (other than the originating office; in this example, the New York office) and make the appropriate changes. I made two scripts, one script to remove an ephone-dn, and another add a new user.
The other important thing is keeping track of all the users in each office. A simple Excel spreadsheet will keep this in check. Since my department is responsible with the removal of the user from the computer and phone systems, I need to have a way to account for each user in each office, along with their ephone-dn number and extension number.
Below is an example of the Perl script. I used Strawberry Perl for Windows, but I'm sure it would work anywhere you can install Perl (Linux, etc). You must have net::telnet::Cisco::IOS installed. (http://search.cpan.org/~kraken/Net-Telnet-Cisco-IOS-0.6beta/lib/Net/Telnet/Cisco/IOS.pm)
Remove_ephonedn.pl
#USE AT YOUR OWN RISK!!!
#!/usr/bin/perl
use strict;
use warnings;
use Net::Telnet::Cisco::IOS;
my $username = "username";
my $password = "password";
my %offices = (
ny => '192.168.10.1',
la => '192.168.11.1',
nsh => '192.168.12.1',
chi => '192.168.13.1',
);
"Enter the ephone-dn to be removed: ";
chomp (my $ephone_dn = <>);
print "\nAvailable entries:
ny = New York la = Los Angeles
nsh = Nashville chi = Chicago
Enter the originating office: ";
chomp (my $office = <>);
foreach my $host ( keys %offices ) {
next if lc($office) eq lc($host);
my $conn = Net::Telnet::Cisco::IOS->new( HOST => $offices{$host} );
$conn->login( Name => $username, Password => $password);
$conn->cmd("conf t\n");
$conn->cmd("no ephone-dn $ephone_dn\n");
$conn->close;
print "Ephone-dn $ephone_dn removed from $host\n";
}
print "
Press ENTER to exit...";
getc(STDIN);
Add_ephoneDN.pl
#!/usr/bin/perl
use strict;
use warnings;
use Net::Telnet::Cisco::IOS;
my $username = "username";
my $password = "password";
my %offices = (
ny => '192.168.10.1',
la => '192.168.11.1',
nsh => '192.168.12.1',
chi => '192.168.13.1',
);
print "\nAvailable entries:
ny = New York la = Los Angeles
nsh = Nashville chi = Chicago
Enter the originating office: ";
chomp (my $office = <>);
"Enter the ephone-dn to be added: ";
chomp (my $ephone_dn = <>);
print "
Enter the first name: ";
chomp (my $firstname = <>);
print "
Enter the last name: ";
chomp (my $lastname = <>);
print "
Enter the new extension number: ";
chomp (my $extension = <>);
print "
Enter the call-forward number: ";
chomp (my $cfwd = <>);
print "
Please review your entries:\n
Originating office: $office
Ephone-dn: $ephone_dn
First name: $firstname
Last name: $lastname
Extension: $extension
Call-forward number: $cfwd
";
print "
Press CTRL+C to quit or press the ENTER key to continue...";
getc(STDIN);
foreach my $host ( keys %offices ) {
next if lc($office) eq lc($host);
my $conn = Net::Telnet::Cisco::IOS->new( HOST => $offices{$host} );
$conn->login( Name => $username, Password => $password);
$conn->cmd("conf t\n");
$conn->cmd("ephone-dn $ephone_dn\n");
$conn->cmd("nu $extension n b\n");
$conn->cmd("na $firstname $lastname\n");
$conn->cmd("call-f a $cfwd\n");
$conn->close;
print "Ephone-dn $ephone_dn entered in $host\n";
}
print "
Press ENTER to exit...";
getc(STDIN);
#USE AT YOUR OWN RISK!!!
As the last line of the script says: (Disclaimer) PLEASE USE THESE SCRIPTS AT YOUR OWN RISK!!! I'm not responsible for anything that happens if you screw this up.
You shouldn't have any problems but, just to "cover my a$$"
Keep in mind that when you build your UC's, you have to make sure that it uses its users' ephone-dns with a high or low number; This way it will not conflict with the ephone-dn number scheme for this purpose.
In my Excel spreadsheet, I have the following example:
NY Office - EphoneDN number | Name | Extension | DID | |
---|---|---|---|---|
50 | Main number | 1000 | 2125551000 | |
51 | George Burns | 1001 | 2125551001 | |
52 | Steve Wright | 1002 | 2125551002 | |
53 | John Smith | 1003 | 2125551003 | |
LA Office - EphoneDN number | Name | Extension | DID |
---|---|---|---|
60 | Main number | 1100 | 2135559000 |
61 | Home Simpson | 1101 | 2135559001 |
62 | Ranger Joe | 1102 | 2135559002 |
If any of you have any questions or suggestions, please let me know. My next project will be to try to get a script to get into the CUE CLI to automate something else.
Good luck,
Renato
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide