Das Notes Forum
Domino 9 und frühere Versionen => Administration & Userprobleme => Thema gestartet von: _Markus_ am 24.10.02 - 09:38:00
-
Morgens,
um meinem GroupShield Problem Herr zu werden würde ich gerne in 20 Minuten Intervallen ein paar Konsolen-Kommandos
(tell router quit
tell GSDOAScan quit
load GSDOAScan
load router)
ausführen lassen ... hat jemand eine Idee, wie man so
etwas realisieren könnte?
Thanks in advance for any help! ;D
-
Dazu kannst du ein paar NotesAPI Calls und einen periodischen Agentenverwenden:
Den folgenden Code packst du in den DECLARATION Teil deines Agenten:
Declare Function NSFRemoteConsole Lib "NNotes.dll" Alias "NSFRemoteConsole" (Byval Server As String, Byval cmd As String, ret As Long) As Long
Declare Function OSLockObject Lib "NNotes.dll" Alias "OSLockObject" (Byval Handle) As String
Declare Sub OSUnlockObject Lib "NNotes.dll" Alias "OSUnlockObject" (Byval Handle)
Declare Sub OSMemFree Lib "NNotes.dll" Alias "OSMemFree" (Byval Handle)
Class remoteConsole
Private IsError As Variant
Private rc As Integer
Private hBuffer As Long
Private Server As String
Private Command As String
Private Result As String
Sub New(inpServer As String)
Dim server As New NotesSession
If inpServer = "" Then
Me.IsError = True
Else
Me.server=inpServer
Me.IsError = False
End If
End Sub
Function Execute(inpCommand As String) As String
If Me.Server = "" Then
Exit Function
End If
If inpCommand = "" Then
Me.execute="You must specify a command"
Me.iserror = True
Exit Function
Else
Me.command = inpCommand
End If
Me.rc = NSFRemoteConsole(Me.server, Me.command, hBuffer)
If Me.rc <> 0 Then
Me.iserror = True
Me.result="Error returned " & _
" from console [" & Cstr(rc) & "]"
Else
Me.result = OSLockObject(hBuffer)
Call OSUnlockObject(hBuffer)
Call OSMemFree(hBuffer)
Me.Iserror = False
End If
Me.execute = Me.result
End Function
End Class
Dann brauchst du nur noch deine Kommandos über den INITIALIZE Event deines Agenten aufzurufen
Sub Initialize
Dim exec As String
Dim dummy As Variant
Dim remConsole As New RemoteConsole ( "DeinServer" )
Exec = "tell router quit"
dummy = remConsole.Execute(exec)
'...
'entsprechend dann für die anderen Befehle
end sub
eknori
-
:D :D :D :D :D
Muchas Gracias!
Funktioniert gnadenlos gut 8)
-
DU HELD !!!!
symbolisch knutsch *eg*
:D :D :D :D :D :D :D
-
Hi,
kann man hier eigentlich einen Dialog einbauen, um die entsprechenden Eingaben für den Agenten zu machen ?
nicht einzelne Fenster für Server und Befehl ( hab ich schon), sondern alle Angeben in einem Dialogfenster und dann an den Agenten übergeben.
Idee ?
hier mein Code für einzelne Eingabefenster
Sub Initialize
Dim exec As String
Dim dummy As Variant
Dim workspace As New NotesUIWorkspace
srv$ = workspace.Prompt(PROMPT_OKCANCELEDIT, _
"Server Name", "Bitte geben Sie den vollqualifizierten Notes Namen ein: (Server/Hallo/DE) ", "", prompt_list)
'Cancel, oder keine Eingabe führt zu Abbruch
If (srv$ = "") Then Goto Fehler
comm$ = workspace.Prompt(PROMPT_OKCANCELEDIT, _
"Datenbankname", "Bitte geben Sie den zu ändernden Datenbanknamen ein: (mail\Kunze.nsf) ", "", "")
'Cancel, oder keine Eingabe führt zu Abbruch
If (comm$ = "") Then Goto Fehler
Dim remConsole As New RemoteConsole ( srv$ )
Exec = "lo mkacl " & comm$ & " ""Admins"" manager -f d -u pg" ' Welches Kommando ?
If exec = "" Then
Exit Sub
End If
remConsole.Execute(exec) ' Kommando ausführen
On Error Goto Fehler2
Exit Sub
Fehler:
strMessage = "Abbruch durch Benutzer bzw. keine Eingabe"
lBoxType = MB_OK+MB_ICONSTOP
Messagebox strMessage, lBoxType, "Info"
Exit Sub
Fehler2:
iErr = Err()
strMessage = "Server nicht gefunden oder anderes Problem"
lBoxType = MB_OK+MB_ICONSTOP
Messagebox strMessage, lBoxType, "Info"
Exit Sub
Exit Sub
End Sub
Hardy
-
macht das denn bei periodischen Agenten Sinn ?
-
mir geht es mehr darum den mkacl Befehl einfacher ausführen zu können, ohne sich die ganzen optionen wieder ansehen zu müssen
Also einfach klick hier und da und der entspr. Befehl mit den eingetragenen Optionen wird an der Serverkonsole ausgeführt.
Hardy