Hängengebliebene Threads

Hallo,

und da habe ich nochmals ein Problem wo ich Eure Hilfe brauchen würde.
Ich habe meine USV und CloudStation integriert (mit Grafiken und Statistiken - sieht echt schick aus).
Jedoch passiert es ab und an, dass eine SNMP Abfrage „hängen“ bleibt --> Sprich der Thread bleibt offen, Irgendwann nach 2 Wochen muss ich die IPS-Kiste dann durchstarten (macht sie automatisch) - aber trotzdem ist das ganze ärgerlich.

Gibt es eine Möglichkeit einen offenen Thread wenn dieser länger wie xx Minuten offen ist mit einem Befehl zu schliessen?

Liebe Grüße

Thomas

Nein. Der einzige Weg für dich ist, dass du die SNMP Befehle nichts nutzt, sondern z.B. den im Forum beschriebenen Workaround mit snmpget ausprobierst. Oder du überzeugst das PHP Team den Bug in ihrer Extension zu lösen :smiley:

paresy

Kann ich nur empfehlen : http://www.ip-symcon.de/wiki/SNMP

Hi - also ich arbeite doch nur mehr mit snmpget … hilft aber nichts.
Irgendwann bleibt das ganze Ding hängen.
Und nachdem ich meine Cloude abfrage und die USV bleibt IPSYMCON schon alle 2 - 3 Tage stehen - startet dann natürlich dank Watchdog wieder - aber lästig ist es alle mal.

Und leider kann ich das erwähnte Tool nicht mehr herunterladen, weil es die Seite nicht mehr gibt - und ich habe es auch niergendwo anders gefunden …

:confused::confused::confused::confused:

Hallo Thomas

suche ich auch schon seit Tagen

VG

Andreas

PS Könnte einer evtl. es per Email zukommen lassen :rolleyes:

Hi Andreas,

ich hab eine „Alternative gefunden“:

Schau es Dir doch auch mal an … ich habe ein paar Dinge in der Command Line versucht und es funktioniert.
Jetzt muss ich mich mal um meine Frau kümmern - aber ich werde versuchen dieses Tool mal zu integrieren.

Liebe Grüße

Thomas

Hallo,

habe es jetzt ausprobiert. Und es funktioniert mit der Freeware seit gestern Abend ohne Probleme.
Anbei ein Teil des Codes.

Die Funktion selber (ganz unten) plus auch meine Auswertung wenn das Gerät über SNMP nicht erreichbar ist.


define ("USV_Station_IP", "192.168.2.51");
define ("Community",  "Public");
define ("c_UPS_BatteryStatus", "1.3.6.1.2.1.33.1.2.1");									

$Battery_Status = snmp__get(USV_Station_IP, Community, c_UPS_BatteryStatus);

if (strpos($Battery_Status, "Failed") == true)                                         // Status true heisst, dass "Failed" zurückgeliefert wird --> Gerät nicht erreichbar
{
	if (getValue(USV_SNMP_Status) == true)                                              // in diesem Fall ist Fehler gerade passiert --> Logger Warning und Prowl Warning
	{
		setValue(USV_SNMP_Status, false);
	   Send_Prowl("HOLZ","SNMP Verbindung zu USV unterbrochen", 0, "USV");
		IPSLogger_Wrn("USV","SNMP Verbindung zu USV unterbrochen!");
		return;
	}
	else
	{
	   return;
	}
}
else
{
  	if (getValue(USV_SNMP_Status) == false)                                              // in diesem Fall USV Restore gerade jetzt --> Logger Warning und Prowl Warning
	{
		setValue(USV_SNMP_Status, true);
	   Send_Prowl("HOLZ","SNMP Verbindung zu USV restored.", 0, "USV");
		IPSLogger_Wrn("USV","SNMP Verbindung zu USV restored.");
	}
}

switch ($Battery_Status)
{
	case 1:
	   $Battery_Status = "unknown";
	   break;

	case 2:
	   $Battery_Status = "Normal";
	   break;

	case 3:
	   $Battery_Status = "Battery Low";
	   break;

	case 4:
	   $Battery_Status = "Battery Depleted";
	   break;

	default:
	   break;
}
setValue(Battery_Status, $Battery_Status);


//----------------------------------------------------------

function snmp__get($host, $Community, $oid)
{
	$snmp_get = "C:\IP-Symcon\IPS_Tools\SNMP\SnmpGet.exe";                                    // Filename

	$Value = IPS_Execute($snmp_get, "-r:$host -c:$Community -q -t:2 -o:$oid", false, true);
	return ($Value);
}