problem with script template for mds9020

Post general support questions here that do not specifically fall into the Linux or Windows categories.

Moderators: Developers, Moderators

Post Reply
Nesarin
Posts: 13
Joined: Wed Dec 20, 2006 2:40 pm

problem with script template for mds9020

Post by Nesarin »

We've been having a terrible time getting the the script in this thread to load. We've done what was required for the placement of the php script and the xml file, but when we go to test out the functions, all we receive is information on the management port of the switch. We are not seeing any instances of the individual port information at all. Is there anyone who can give me a little help. I'm not sure how to start diagnosing the problem.

Thanks in advance.
Nesarin
Posts: 13
Joined: Wed Dec 20, 2006 2:40 pm

Post by Nesarin »

OK, I did a manual run of the query_mds9020_san_portinfo.php by pointing to it on the cacti server and in the browser. I get this for output:

Code: Select all

Notice: Undefined offset: 1 in /var/www/html/cacti/scripts/query_mds9020_san_portinfo.php on line 30

Notice: Undefined offset: 2 in /var/www/html/cacti/scripts/query_mds9020_san_portinfo.php on line 31

Notice: Undefined offset: 3 in /var/www/html/cacti/scripts/query_mds9020_san_portinfo.php on line 32

Notice: Undefined offset: 4 in /var/www/html/cacti/scripts/query_mds9020_san_portinfo.php on line 33
Host = Community = Command =
Those lines correspond to this piece of code:

Code: Select all

$hostname = $_SERVER["argv"][1];
$snmp_community = $_SERVER["argv"][2];
$snmp_version = $_SERVER["argv"][3];
$cmd = $_SERVER["argv"][4];

From doing a little reading, the variables he's creating are being referenced to a predefined variable within php. Does this mean that my Cacti box's version of php isn't recognizing theese predefined variables?

Edit: Upon further inspection and thought, I suppose you would have to run the scripts that pass in the information before it would know which box to query, so therefore it doesn't find that info. Or at least that's what I'm assuming.
Nesarin
Posts: 13
Joined: Wed Dec 20, 2006 2:40 pm

Post by Nesarin »

If it helps anyone. When I run a verbose on one of the data queries for this script, I get this for the debug output...

Code: Select all

+ Running data query [13].
+ Found type = '4 '[script query].
+ Found data query XML file at '/var/www/html/cacti/resource/script_queries/san_port.xml'
+ XML file parsed ok.
+ Executing script for list of indexes '/usr/bin/php -q /var/www/html/cacti/scripts/query_mds9020_san_portinfo.php <hostname> <snmpstring> 2 index'
+ Executing script query '/usr/bin/php -q /var/www/html/cacti/scripts/query_mds9020_san_portinfo.php 
<hostname removed> <community string removed>  2 query index'
+ Executing script query '/usr/bin/php -q /var/www/html/cacti/scripts/query_mds9020_san_portinfo.php 
<hostname removed> <community string removed>  2 query name'
+ Executing script query '/usr/bin/php -q /var/www/html/cacti/scripts/query_mds9020_san_portinfo.php 
<hostname removed> <community string removed>  2 query speed'
+ Found data query XML file at '/var/www/html/cacti/resource/script_queries/san_port.xml'
+ Found data query XML file at '/var/www/html/cacti/resource/script_queries/san_port.xml'
+ Found data query XML file at '/var/www/html/cacti/resource/script_queries/san_port.xml'
Nesarin
Posts: 13
Joined: Wed Dec 20, 2006 2:40 pm

Post by Nesarin »

OK, after a long time off from this problem. I wanted to come back to it. I'm not sure if any of this is relevant, but I wanted to say that I think I've found a few different reason for why there has been a problem with this script. First of all, our mds9020 doesn't seem to respond to the Fibre Alliance MIB v4.0 It does respond to the MIB II oid's.

However, I need to know more about how scripts using PHP act with Cacti. Because it seems that any scripts that have been tried that use php scripts do not work at all. We are using Cactid v0.8.6h and Cacti 0.8.6i (fully patched). It does say that php snmp support is set to no. Do we need the php snmp support in order for these scripts to work or is there something that I'm missing??
User avatar
gandalf
Developer
Posts: 22383
Joined: Thu Dec 02, 2004 2:46 am
Location: Muenster, Germany
Contact:

Post by gandalf »

In general, it is not a must to use php-snmp. Personally, I'm currently struggeling with an incompatibilty between net-snmp and php-snmp. So you may try if this solves your problem.
For some more infos on using scripts, see My Cacti Stuff. It's general purpose, but may help understanding
Reinhard
Nesarin
Posts: 13
Joined: Wed Dec 20, 2006 2:40 pm

Post by Nesarin »

Ok, I've been doing a little more in-depth searching on this script. I have put the script and the xml files in their correct places. I then tried to add the script to the correct device. Afterwards, I tried to run it verbosely within Cacti.

I was curious, so I tried to run some of the commands that this was doing manually. Though I didn't notice any errors reported from that. I did see that cacti was calling the perl script like so:

Code: Select all

/usr/bin/php -q /var/www/html/cacti/scripts/query_mds9020_san_portinfo.php <device name> <community string> 2 query index
I tried running this through manually at the command prompt and got the following:

Code: Select all

<b>Notice</b>:  Undefined offset:  0 in <b>/var/www/html/cacti/scripts/query_mds9020_san_portinfo.php</b> on line <b>51</b><br />
32!
This continues to repeat from offset 0-19. ie. the number of ports the switch has.

I went back and looked at the script code and this is the section of code it is complaining about.

Code: Select all

elseif ($cmd == "query") {
        $arg = $_SERVER["argv"][5];

        $arr_index = reindex(cacti_snmp_walk($hostname, $snmp_community, $oids["index"], $snmp_version, "", ""));
        $arr = reindex(cacti_snmp_walk($hostname, $snmp_community, $oids[$arg], $snmp_version, "", ""));

      for ($i=0;($i<sizeof($arr_index));$i++)    
  {
    $convert_hex = hex2dec($arr[$i]);      // Line 51
                print $arr . "\n";
                print $arr_index[$i] . "!" . $convert_hex . "\n";

I'm not trained in php particularly, but it looked like everything in the statement would be solid. So I put a print statement just above line 51 to output the information that $arr and what $arr[$i] returns. It looks like $arr returns "Array" and $arr[$i] returns nothing, just blank space. Could this be where part of my trouble is coming from???
Nesarin
Posts: 13
Joined: Wed Dec 20, 2006 2:40 pm

Post by Nesarin »

Nesarin wrote:Ok, I've been doing a little more in-depth searching on this script. I have put the script and the xml files in their correct places. I then tried to add the script to the correct device. Afterwards, I tried to run it verbosely within Cacti.

I was curious, so I tried to run some of the commands that this was doing manually. Though I didn't notice any errors reported from that. I did see that cacti was calling the php script like so:

Code: Select all

/usr/bin/php -q /var/www/html/cacti/scripts/query_mds9020_san_portinfo.php <device name> <community string> 2 query index
I tried running this through manually at the command prompt and got the following:

Code: Select all

<b>Notice</b>:  Undefined offset:  0 in <b>/var/www/html/cacti/scripts/query_mds9020_san_portinfo.php</b> on line <b>51</b><br />
32!
This continues to repeat from offset 0-19. ie. the number of ports the switch has.

I went back and looked at the script code and this is the section of code it is complaining about.

Code: Select all

elseif ($cmd == "query") {
        $arg = $_SERVER["argv"][5];

        $arr_index = reindex(cacti_snmp_walk($hostname, $snmp_community, $oids["index"], $snmp_version, "", ""));
        $arr = reindex(cacti_snmp_walk($hostname, $snmp_community, $oids[$arg], $snmp_version, "", ""));

      for ($i=0;($i<sizeof($arr_index));$i++)    
  {
    $convert_hex = hex2dec($arr[$i]);      // Line 51
                print $arr . "\n";
                print $arr_index[$i] . "!" . $convert_hex . "\n";

I'm not trained in php particularly, but it looked like everything in the statement would be solid. So I put a print statement just above line 51 to output the information that $arr and what $arr[$i] returns. It looks like $arr returns "Array" and $arr[$i] returns nothing, just blank space. Could this be where part of my trouble is coming from???
Nesarin
Posts: 13
Joined: Wed Dec 20, 2006 2:40 pm

Post by Nesarin »

OK, figured out the problem here, This particular script seems to get a bit out of whack if anything but SNMPv1 is used. We were trying with 2, but once you replace that, everything seems to work fine. I also posted this find in the thread where this script was downloaded.
Post Reply

Who is online

Users browsing this forum: No registered users and 5 guests