#AutoIt3Wrapper_UseX64=n Opt("MustDeclareVars", 1) AutoItSetOption("WinTitleMatchMode", 3) ; EXACT_MATCH! ;============================================================ ; PSM AutoIt Dispatcher Skeleton ; ------------------------------ ; ; Use this skeleton to create your own ; connection components integrated with the PSM. ; Areas you may want to modify are marked ; with the string "CHANGE_ME". ; ; Created : April 2013 ; Cyber-Ark Software Ltd. ;============================================================ #include "PSMGenericClientWrapper.au3" ;======================================= ; Consts & Globals ;======================================= Global Const $DISPATCHER_NAME = "F5" Global Const $CLIENT_EXECUTABLE = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" Global Const $CLIENT_PARAMETERS = "-ignore-certificate-errors" Global Const $Address = "192.168.2.150" Global Const $ERROR_MESSAGE_TITLE = "PSM " & $DISPATCHER_NAME & " Dispatcher error message" Global Const $LOG_MESSAGE_PREFIX = $DISPATCHER_NAME & " Dispatcher - " Global $TargetUsername Global $TargetPassword Global $TargetAddress Global $g_pTargetAddress Global $ConnectionClientPID = 0 Global $PSMRemoteMachine ;======================================= ; Code ;======================================= Exit Main() ;======================================= ; Main ;======================================= Func Main() ; Init PSM Dispatcher utils wrapper ToolTip ("Initializing...") if (PSMGenericClient_Init() <> $PSM_ERROR_SUCCESS) Then Error(PSMGenericClient_PSMGetLastErrorString()) EndIf LogWrite("successfully initialized Dispatcher Utils Wrapper") ; Get the dispatcher parameters FetchSessionProperties() LogWrite("mapping local drives") if (PSMGenericClient_MapTSDrives() <> $PSM_ERROR_SUCCESS) Then Error(PSMGenericClient_PSMGetLastErrorString()) EndIf LogWrite("starting client application") ToolTip ("Starting " & $DISPATCHER_NAME & "...") $ConnectionClientPID = Run($CLIENT_EXECUTABLE & " https://" & $g_pTargetAddress & " " & $CLIENT_PARAMETERS) ;Запустить приложение и открыть Https:// переменную адресса и вставить клиент параметр EndIf if ($ConnectionClientPID == 0) Then Error(StringFormat("Failed to execute process [%s]", $CLIENT_EXECUTABLE, @error)) EndIf ; Send PID to PSM as early as possible so recording/monitoring can begin LogWrite("sending PID to PSM") if (PSMGenericClient_SendPID($ConnectionClientPID) <> $PSM_ERROR_SUCCESS) Then Error(PSMGenericClient_PSMGetLastErrorString()) EndIf ; Local $hWnd1 = WinWaitActive("Connect to MySQL Server") WinWait("BIG-IP® - bigip.f5.com (192.168.2.150) - Google Chrome") BlockInput(1) Sleep("1000") ControlSend("BIG-IP® - bigip.f5.com (192.168.2.150) - Google Chrome","","",$TargetUsername,1) ;отправить комманду в окно хрома юзернейм и последняя 1 это флаг для отправки без изменений, как получил так и отправь без интерпритации ControlSend("BIG-IP® - bigip.f5.com (192.168.2.150) - Google Chrome","","","{TAB}") ControlSend("BIG-IP® - bigip.f5.com (192.168.2.150) - Google Chrome","","",$TargetPassword) ControlSend("BIG-IP® - bigip.f5.com (192.168.2.150) - Google Chrome","","","{TAB}") ControlSend("BIG-IP® - bigip.f5.com (192.168.2.150) - Google Chrome","","","{Enter}") BlockInput(0) ; Terminate PSM Dispatcher utils wrapper LogWrite("Terminating Dispatcher Utils Wrapper") PSMGenericClient_Term() Return $PSM_ERROR_SUCCESS EndFunc ;================================== ; Functions ;================================== ; #FUNCTION# ==================================================================================================================== ; Name...........: Error ; Description ...: An exception handler - displays an error message and terminates the dispatcher ; Parameters ....: $ErrorMessage - Error message to display ; $Code - [Optional] Exit error code ; =============================================================================================================================== Func Error($ErrorMessage, $Code = -1) ; If the dispatcher utils DLL was already initialized, write an error log message and terminate the wrapper if (PSMGenericClient_IsInitialized()) Then LogWrite($ErrorMessage, True) PSMGenericClient_Term() EndIf Local $MessageFlags = BitOr(0, 16, 262144) ; 0=OK button, 16=Stop-sign icon, 262144=MsgBox has top-most attribute set MsgBox($MessageFlags, $ERROR_MESSAGE_TITLE, $ErrorMessage) ; If the connection component was already invoked, terminate it if ($ConnectionClientPID <> 0) Then ProcessClose($ConnectionClientPID) $ConnectionClientPID = 0 EndIf Exit $Code EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: LogWrite ; Description ...: Write a PSMWinSCPDispatcher log message to standard PSM log file ; Parameters ....: $sMessage - [IN] The message to write ; $LogLevel - [Optional] [IN] Defined if the message should be handled as an error message or as a trace messge ; Return values .: $PSM_ERROR_SUCCESS - Success, otherwise error - Use PSMGenericClient_PSMGetLastErrorString for details. ; =============================================================================================================================== Func LogWrite($sMessage, $LogLevel = $LOG_LEVEL_TRACE) Return PSMGenericClient_LogWrite($LOG_MESSAGE_PREFIX & $sMessage, $LogLevel) EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: PSMGenericClient_GetSessionProperty ; Description ...: Fetches properties required for the session ; Parameters ....: None ; Return values .: None ;Место получения переменных с сайбера ; =============================================================================================================================== Func FetchSessionProperties() ; CHANGE_ME if (PSMGenericClient_GetSessionProperty("Username", $TargetUsername) <> $PSM_ERROR_SUCCESS) Then Error(PSMGenericClient_PSMGetLastErrorString()) EndIf if (PSMGenericClient_GetSessionProperty("Password", $TargetPassword) <> $PSM_ERROR_SUCCESS) Then Error(PSMGenericClient_PSMGetLastErrorString()) EndIf if (PSMGenericClient_GetSessionProperty("Address", $TargetAddress) <> $PSM_ERROR_SUCCESS) Then Error(PSMGenericClient_PSMGetLastErrorString()) EndIf if (PSMGenericClient_GetSessionProperty("PSMRemoteMachine", $g_pTargetAddress) <> $PSM_ERROR_SUCCESS) Then ;получить переменную RemoteMachine после чего ее можно будет использвоать Error(PSMGenericClient_PSMGetLastErrorString()) EndIf EndFunc