The way to access the source network device will depend on the type of Domain Manager and the domain. This discussion focuses on the MPLS Topology Server and the MPLS domain.
Because the Telnet CLI package is in effect, the MPLS Topology Server uses the Perl program and the Generic-Telnet-Driver to access the source network device. The Perl script, named “perl_commands.pl,” is located in the BASEDIR/smarts/actions/mpls-tma directory in the MPLS Management Suite installation area.
As input, the Generic-Telnet-Driver requires the source device name, the MPLS Topology Server name, the name and login credentials of the destination, and the CLI command, which is the LSP ping command that is constructed by pinglsp-ondemand.asl.
/*************************************************************** * Construct ping command. The destination IP address can be * obtained through the LSPId attribute of the LSP object. * The corresponding IP mask is in the destination IP object. ***************************************************************/ DestAddress = lspObj->LSPId ? FAIL; ipObj = object(“IP”,”IP-”.DestAddress); if (deviceTypeID == 0) { Netmask = ipObj->Netmask; CLI = LSPPingCommand.” “.DestAddress.” “.Netmask; CLI = CLI.” repeat “.RepeatCount.” timeout “.CiscoTimeOut.” size “.PacketSize.” interval “.Interval; LSPPingCommand = CLI; } else if (deviceTypeID == 1) { CLI = LSPPingCommand.” “.DestAddress; CLI = CLI.” count “.RepeatCount; LSPPingCommand = CLI; }
The CLI device-access objects carrying the login credentials for accessing the source network device are imported from IP Availability Manager and stored in the MPLS Topology Server’s repository. The user and enable passwords of the login credentials are encrypted.
The “site key” is used to decrypt copies of the user and enable passwords just before the Generic-Telnet-Driver logs in to the source device using Telnet and invokes the MPLS LSP ping command from the originating devices. As explained in the System Administration Guide, the site key is created during the installation of applications.
By default, the Generic-Telnet-Driver saves the CLI output to a data file. The filename is specified with the LogFileName argument.
if (mpls_ver >= 2) { actScript = object(); actName = “”; foundDriverName = FALSE; foreach actName (getInstances(“ACT_PerlScript”)) { if (actName == “Generic-CLI-Access-Driver”) { actScript = object(“ACT_PerlScript”, actName); foundDriverName = TRUE; break; } else if (actName == “Generic-Telnet-Driver”) { actScript = object(“ACT_PerlScript”, actName); foundDriverName = TRUE; break; } } ... OutputDataFile = homedir.“/local/logs/CLI-TOOL-LSP-PING-“.srcName.“-“.thread(). “-“.numeric(time()).“.txt“; if (mpls_ver == 1) { driverParamObj = create(“GA_Parameters“, “CLI-Parameters-“.thread()) ? FAIL; driverParamObj->clear(); driverParamObj->insert(“SM_P_EXPECT_HOSTNAME“,agentObj ->AgentAddress); driverParamObj->insert(“SM_P_EXPECT_COMMANDS“,CLI); /************************************************************ * Telnet-Drive saves CLI output to a file. The file name is * specified with SM_P_EXPECT_FILE. ************************************************************/ driverParamObj->insert(“SM_P_EXPECT_FILE“, OutputDataFile); driverParamObj->insert(“AgentName“, agentObj->Name); driver->startWithParameters(driverParamObj); } else { paramName = “CLI-Tool-Telnet-Params-“.thread() ? FAIL; print(time().ASLNAME.paramName); perlParams = create(“GA_Parameters“, paramName); perlParams->clear(); perlParams->insert(“DomainName“, getServerName()); perlParams->insert(“SystemName“, srcObj->Name); perlParams->insert(“Commands“, CLI); perlParams->insert(“LogFileName“, OutputDataFile); perlParams->insert(“VendorID“, VendorID); actScript->run(paramName); } READOUTPUT(OutputDataFile, LSPPingCommand);
This ACT_PerlScript instance is not attached to any GA_RemoteServer object, meaning that it will run on the same server where it is invoked. The output filename is returned with the LogFileName variable.