Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Skalden am 06.09.12 - 14:08:13

Titel: "show stat" ohne Konsolen-Output
Beitrag von: Skalden am 06.09.12 - 14:08:13
Hallo Notes-Gemeinde,

Ich stehe vor einem Problem. Ich die Daten aus dem "show stat"-Befehl haben, ohne dabei die Konsole der Server zuzumüllen, die ich antrigger. Nur leider habe ich nichts in Java, LotusScript oder C++ gefunden, was mir dabei weiterhilft. Gibt es evtl. eine Datenbank die sich regelmäßig (am besten einstellbar), die so etwas von IBM schon mitbringt oder gibt es irgend eine Klasse in Java, die ich übersehen habe? Vielleicht auch nen Kniff in LotusScript, womit sich das Problem umgehen lässt?

Beste Grüße
Skalden
Titel: Re: "show stat" ohne Konsolen-Output
Beitrag von: mholup am 06.09.12 - 14:36:27
Hallo,

es gibt NSFGetServerStats in C++ der nichts in die Konsole schreibt in etwa so

Code
error = NSFGetServerStats(temp.GetTextPtr(), NULL, NULL, &hTable, &TableSize);
			if (!error )
			{
				//ParseStats(temp.GetTextPtr(), hTable, TableSize);
				if (hTable == NULLHANDLE)
				  {
					 printf("Server '%s' has no Serverstats.\n",  temp);
					 printf("Server '%s' is not ok.\n", temp);
					 return(ERROR);
				  }
				else
				  {
					 char *p,*pBuffer,*pValue; 
					 char NumberValue[MAXSPRINTF];
					 char Buffer[MAXUSERNAME] = "";
					 WORD BufferLength;
					 DWORD i1 = 0,x2 = 0;
					 WORD NumListEntries;
					 char Output[MAXSPRINTF];	
					 bool MemFirst=false;
					 writing = true;	
					 p = (char far *)OSLockObject(hTable);
					 //NumListEntries = ListGetNumEntries(lpList, FALSE);
					 while (!p==NULL)
					 {
						//cout.write(p,100);
						pValue = strchr(p, CHAR_TAB);
						if (pValue == NULL)
						 break;
						i1 = (WORD) (pValue-1 - p + 1);
						//Buffer clear
						memset(Buffer,' ',strlen(Buffer));
						//Copy from p in the length i1 to Buffer
						memcpy(Buffer,p,i1);
						//strcat(Buffer, "\0");
						/*cout <<"\n" << Buffer;
						cout.write(p, 100);
						cout.write(pValue, 100);
						cout << "\n" << p;
						cout <<"\n" << pValue;*/
			            
						pValue++;
						//laenge += (WORD) (pValue - p + 1);
						TableSize -= (WORD) (pValue - p + 1);
						p = strchr(pValue, CHAR_LF);
						if (p == NULL)
							break;
						/* Parse the value to store in array */
						BufferLength = (WORD) (p - pValue);
						p++;
						//laenge += BufferLength+1;
						TableSize -= BufferLength+1;
						if (strncmp(Buffer,"Agent.",6)==0)

Grüße Max
Titel: Re: "show stat" ohne Konsolen-Output
Beitrag von: eknori am 06.09.12 - 14:45:47
Du kannst den Console Output unterdrücken, wenn du vor den befehl ein ! (Ausrufezeichen) schreibst. Also !Show Stat. Wenn du das in deiner LS Routine als parameter an die aufrufende funktion übergibst, wird nur der Befehl selbst an der Console angezeigt, nicht aber der Output. Den erhälst du als Rückgabe der Funktion.
Domino Configuration Tuner macht es genau so.
Titel: Re: "show stat" ohne Konsolen-Output
Beitrag von: Skalden am 06.09.12 - 14:51:41
Der Tipp mit dem Ausrufezeichen ist grandios! Den kann ich so in meine bestehende Lösung einbauen! Vielen Dank!
Titel: Re: "show stat" ohne Konsolen-Output
Beitrag von: mholup am 07.09.12 - 08:50:15
Du kannst den Console Output unterdrücken, wenn du vor den befehl ein ! (Ausrufezeichen) schreibst. Also !Show Stat. Wenn du das in deiner LS Routine als parameter an die aufrufende funktion übergibst, wird nur der Befehl selbst an der Console angezeigt, nicht aber der Output. Den erhälst du als Rückgabe der Funktion.
Domino Configuration Tuner macht es genau so.

Hallo,
Habs mal probiert und hat natürlich nicht funktioniert, Ausgabe kam trotzdem am Server Monitor und Log an. Die Frage ist jetzt liegts an irgendeinem Ini Parameter?

Groß Max
Titel: Re: "show stat" ohne Konsolen-Output
Beitrag von: Skalden am 10.09.12 - 16:16:25
Ich kann nur für unsere Umgebung sprechen:
Ich habe nen Java-Agent geschrieben in dem irgendwo eine solche lustige Zeile auftritt:
Code
serverAnswer = session.sendConsoleCommand(Server, "!sho stat " + statistic[k]);
Die Variable serverAnswer ist nen String. Ich habs im Log mal verfolgt, er müllt ihn mir nicht zu, sondern zeigt nur, das der Command "!sho stat" durch den Executive User ausgelöst wurde, aber nicht den vollständigen Log hintendran. Also genau das, was ich wollte.
Titel: Re: "show stat" ohne Konsolen-Output
Beitrag von: eknori am 11.09.12 - 06:36:01
exactly, genau so funktioniert es.