Pular para o conteúdo principal
Version: 3.23

Sintaxes de plugins executores

Este capítulo vai abordar todas as sintaxes de plugin e suas respectivas particularidades. Um pequeno exemplo será utilizado para facilitar o entendimento da funcionalidade. Lembre-se que o senhasegura é instalado com mais de 250 templates prontos para serem utilizados. Você também entrar em contato com o senhasegura PAM Solution para ter acesso a templates desenvolvidos pela comunidade de parceiros.

cURL

Executor para solicitações de páginas web simples. Páginas que tenham ambiente JavaScript ou eventos HTML. Este executor pode ser utilizado para sistemas legado que são baseada na arquitetura HTML4 pura.

Caso seja necessário realizar uma automação utilizando elementos de interface web que simulam ações reais do usuário, dê uma olhada no executor HTTP. Por padrão, este plugin não valida a conexão SSL e seu tempo limite padrão está definido para 10 segundos.

Sintaxe

Este plugin aceita comentários. Para fazer comentários use o caractere '#' no início da linha.

ComandoDescrição
set-disable-authNão considera usuário e senha na solicitação para fornecer HTTP Authset-disable-auth
set-request-header ”param” ”value”Define um parâmetro de cabeçalho para a solicitação HTTP a ser realizadaset-request-header ’mytoken’``’FF32C5E9AC1800A2’
set-request-param ”param” ”value”Configura qualquer parâmetro cURL1 oara a solicitação a ser realizadaset-request-param``’CURLOPT_ENCODING’ ’ISO-8859-1’
set-request-content ”content”Determina o conteúdo dos dados da solicitação. A partir desse valor é calculado o comprimento do conteúdo do cabeçalhoset-request-content``’name=Peter&surname=McAlister’
set-content-type ”type”Determina o cabeçalho de definição de conteúdo da requisição. Este valor será atribuído ao header Content-length: text/TYPE;charset=”utf-8” e Accept: text/TYPE.set-content-type ’text’
set-request-method ”method”Determina o tipo de requisição que será realizada. Pode ser post, put and delete methods. Checar RFC 7231 para mais detalhes.set-request-method ’GET’
request ”URL”Realiza a solicitação na URL fornecidarequest ’https://www.google.com/’
expect ”string”Procura por um texto dentro da resposta da requisição. Falha caso não encontre. Continua caso encontre.expect ’password changed!’
no-expect ”string”Procura por um texto dentro da resposta da requisição. Continua caso não encontre. Falha caso encontre.no-expect ’password change failed!’

Exemplo de alteração de senha HTTP simples com cabeçalho de token

set-request-header "X-INTRANET-TOKEN" "FF32C5E9AC1800A2"
set-request-param "username" "[#AUTH_USER#]"
set-request-param "password" "[#AUTH_PASSWORD#]"
set-request-param "tgt_user" "[#USERNAME#]"
set-request-param "tgt_npassword" "[#NEW_PASSWORD#]"

set-request-method "POST"

## If 7 bytes string 1200-OK returns, the password change was accepted
expect "1200-OK"

## If 7 bytes string 9999-NOK returns, the password change has failure
no-expect "9999-NOK"

HTTP

Executor para solicitações de páginas da web complexas que exigem mais interatividade com elementos JavaScript e gatilhos de evento;

Sintaxe

ComandoDescrição
start-at urlIndica a url inicial da página desejada. Este comando deve estar no começo do template.start-at https://www.senhasegura.com/
timeout millisecondsDuração total em milisegundos do processo como um todo. Este comando deve estar no começo do template.timeout 3000
useragent stringEspecifica qual useragent será utilizado durante a troca de senha. Por padrão, será usado Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36. Este comando deve estar no começo do template.useragent senhasegura-executor
new-actionIndica que um novo grupo de ações será iniciado.Um grupo de ações é composto por todas as ações realizadas para um envio de página.new-action
set-location urlRedireciona o executor para a URL indicada.set-location https://mysystem.local/admin/login.php
test-location stringValida a atual URL em relação à string fornecida. A string fornecida pode ser apenas um pedaço de de toda a URL. Para caso o processo seja falso.test-location /admin/login.php
log stringRegistra uma mensagem de log. Utilize para identificar as etapas no log de execução.log Starting authentication steps
test-selector selectorExecuta um teste em um seletor semelhante aos seletores jQuery. Caso não encontre o elemento, o processo é interrompido com erro.test-selector input#username
fill selectordataPreenche o elemento retornado pelo seletor com o valor indicado.fill input#username #USERNAME#
click selectorDispara o evento clicando no elemento DOM retornado pelo seletor.click inputtype=button#login
jclick selectorDispara o clique do evento no elemento retornado pelo seletor.jclick inputtype=button#login
offset xyCria um deslocamento de posicionamento para ajustar os comandos really-click e really-fill.
really-click selectorDispara um clique externo na página. Assim como faz um usuário. Use o comando offset para ajustar a coordenada do elemento.really-click inputtype=button#login
really-fill selectordataPreenche o elemento retornado do seletor com o valor indicado através da simulação de entrada do usuário. O elemento será clicado usando o comando really-click antes de ser preenchido. Use o comando offset para ajustar a coordenada do elemento.really-fill input#username #USERNAME#
prop selectorpropertyvalueAltera a proprieda do elemento. Normalmente usado quando alguma classe CSS ou elemento DOM realizou uma ação really-fill ou really-click que são difíceis de serem executadas.prop input#agreement enabled true
test-visible selectorTesta se o elemento está visível para o usuário. Interrompe a operação caso o mesmo não esteja visível.test-visible div#alert.success
test-not-visible selectorTesta se o elemento está invisível. Interrompe a operação caso o mesmo esteja visível.test-not-visible div#alert.failure
sleep millisecondsAguarde os milissegundos especificados entre uma ação e outra.sleep 1000
jscript jscodeCódigo de script JavaScript a ser executado na atual página renderizada. Use com cuidado.jscript $(’inputtype=checkbox’).prop(’checked’, true);
caution

O comando sleep inseri uma ação de espera para que a ação atual seja retomada e uma nova ação seja gerada com o próximo comando (depois do período de espera).

Exemplo para console Amazon AWS

start-at https://console.aws.amazon.com/console/home
timeout 30000
user-agent "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"

new-action
sleep 4000
test-location /signin?redirect_uri
fill #resolving_input [#USERNAME#]
jclick #next_button
sleep 2000

new-action
fill #ap_password [#CURRENT_PASSWORD#]
click #signInSubmit-input

new-action
test-location /console/home
set-location https://signin.aws.amazon.com/updateaccount?redirect_uri=https%3A%2F%2Fconsole.aws.amazon.com%2Fbilling%2Fhome%23%2Faccount
sleep 2000

new-action
test-location /ap/cnep
jclick #cnep_1A_change_password_button-input

new-action
fill #ap_password [#CURRENT_PASSWORD#]
fill #ap_password_new [#NEW_PASSWORD#]
fill #ap_password_new_check [#NEW_PASSWORD#]
click #cnep_1D_submit_button-input

new-action
test-selector #message_success

LDAP

Este plugin pode ser utilizado para interagir com o Microsoft®Active Directory ou servidores OpenLDAP.

Sintaxe

ComandoDescrição
connect null ”target”Conecta com o destino solicitado. Caso o destino não seja informado, conecta com o dispositivo associado a credencial.connect
find ”dn” ”filter”Localiza a única entrada a ser manipuladafind ’o=MyCompany,c=BR’ ’(username=user01)’
mod-add ”param” ”value”Adiciona um atributo a entrada. Depende se o comando find já tiver sido executado com sucesso.mod-add ’memberuid’ ’username’
mod-del ”param” ”value”Remove um atributo da entrada. Depende se o comando find já tiver sido executado com sucesso.mod-del ’memberuid’ ’username’
mod-replace ”param” ”value”Substitui um atributo da entrada. Depende se o comando find já tiver sido executado com sucesso.mod-replace ’memberuid’ ’username’
bind ”dn”Executa autenticação de servidorbind ’uname’
set-option ”param” ”value”Determina o valor de uma propriedade na conexão LDAP. Veja PHP LDAP1 para a lista de seleção.set-option ’LDAP_OPT_PROTOCOL_VERSION’ ’3’

Exemplo de alteração de senha de usuário de domínio no Microsoft Active Directory

## LDAP protocol version
set-option LDAP_OPT_PROTOCOL_VERSION 3

## DistinguishedName of the user who will connect to the server
bind "cn=[#AUTH_USER#],CN=Users,DC=senhasegura,DC=local"

## Search the user in which the procedure will be done.

## The system will search in general scope for a user object that has
the name of the user
find "DC=senhasegura,DC=local" "(&(objectClass=user)
(sAMAccountName=[#USERNAME#]))"

## Update user password
mod-replace unicodePwd "u([#NEW_PASSWORD#])"

Exemplo para ativação de conta de usuário

## LDAP protocol version
set-option LDAP_OPT_PROTOCOL_VERSION 3
set-option LDAP_OPT_REFERRALS 3

## DistinguishedName of the user who will connect to the server
bind "CN=[#AUTH_USER#],CN=Users,DC=senhasegura,DC=local"

## Search the user in which the procedure will be done.
find "DC=senhasegura,DC=local" "(&(objectClass=user) (sAMAccountName=[#USERNAME#]))"

## Update account status
mod-replace userAccountControl 512

Para encontrar o DistinguishedName do seu servidor, acesse a área de Funcionalidades Avançadas e siga os seguintes passos:

  1. Clicar em View e depois em Funcionalidades Avançadas.

  2. Vendo a lista completa de atributos do usuário, clique em Propriedades do Usuário.

  3. Vá até a aba editor de atributos e encontre o DistinguishedName entre as informações.

SSH

Sintaxe

Este plugin aceita comentários. Para fazer comentários use o caractere '#' no começo da linha.

ComandoDescrição
set-ssh-version [1]Determina qual versão de SSH será usada. Por padrão, será a 2.set-ssh-version 2
set-new-line-mode [unixwindowsmac]Envia a característica do comando. Por padrão, será usado unix.set-new-line-mode unix
set-read-timeout [seconds]Tempo em segundos para o tempo limite de leitura do comando read. Por padrão, será usado 5 segundos.set-read-timeout 5
set-connect-timeout [seconds]Tempo em segundos para tempo limite de conectividade. Por padrão, será usado 5 segundos.set-connect-timeout 5
exec ”string”Executa o comando no dispositivo remoto.exec ’passwd myuser’
write ”string”Escreve a string no dispositivo remoto. O caractere de fim de linha não será enviado.
read ”string”Localiza o texto indicado no output de conexão. Não aceita expressões regulares.read ’New password:’
expect ”string”Localiza o texto indicado no output de conexão, permitindo o uso do caractere curinga ’*’ para pesquisas expansivas.
expect-regexLocaliza o texto através de uma expressão.read ’[nN]ew password:’
sleep ”seconds”Espera que o script seja executado dentro dos segundos fornecidos.sleep 10
no-expectProcura por uma expressão para irrigar dentro da resposta do pedido. Continua caso não encontre. Para caso encontre.no-expect ’password change failed!’
endInterrompe conexão com o servidor alvo.end

Exemplo de alteração de senha de usuário Linux

## Put the language in English
expect "*#"
exec "export LC_ALL=C"

## Execute the password change for the user
expect "*#"
exec "passwd [#USERNAME#]"

## Fill in the new password
expect "*password:"
exec "[#NEW_PASSWORD#]"

## Confirm the new password
expect "*password:"
exec "[#NEW_PASSWORD#]"

## Validates if successfully changed
expect "*updated successfully"

Exemplo de alteração de senha para Apache htpasswd

expect "*#"
exec "htpasswd -bm /etc/htpasswd/.htpasswd [#USERNAME#] [#NEW_PASSWORD#]"

expect "*Updating"
expect "*#"
exec "exit"

end

Exemplo de alteração de senha para Apache Tomcat

## Changing tomcat-users.xml user entry
expect "*#"
exec "sed -i 's/<user username="[#USERNAME#]" password="[#CURRENT_PASSWORD#]"/<user username="[#USERNAME#]" password="[#NEW_PASSWORD#]"/' /etc/tomcat/tomcat-users.xml"

## Validating changing step
expect "*#"
exec "cat /etc/tomcat/tomcat-users.xml | grep 'username="[#USERNAME#]" password'"
expect "*[#NEW_PASSWORD#]*"

## Restarting tomcat
expect "*#"
exec "service tomcat restart"

## Finish the procedure
expect "*#"
exec "exit"
end

Exemplo para Red Hat JBoss Application Vault

expect "*#"
exec "/opt/wildfly/bin/vault.sh --enc-dir /opt/vault --keystore /opt/vault.keystore --keystore-password VaultK --salt $(shuf -i 10000000-99999999 -n 1) --iteration $(shuf -i 10-99 -n 1) --alias vault --vault-block [#ADD_INFO#] --attribute [#USERNAME#] --sec-attr [#NEW_PASSWORD#]"

expect "Please make note of the following:"
expect "*#"
exec "exit"

end

SSH Legacy

Sintaxe

Este plugin aceita comentários. Para fazer comentários utilize o caractere '#' no inicio da linha.

CommandDescription
write ”command”Encaminha a execução do comando para o servidor de destino.write ’passwd myuser’
exec ”command”Similar a write
read ”string”Procura por um texto na resposta do pedido. Falha caso não encontre. Continua caso encontre.read ’password updated successfully’
expect ”string”O mesmo do read
expect-regexO mesmo do read
not-expect ”string”Procura por um texto na resposta do pedido. Continua caso não encontre. Falha caso encontre.password unchanged

Exemplo de troca de senha para Linux legado

## Request password change
expect "*$"
exec "sudo passwd [#USERNAME#]"

## Fill in the sudo password
expect "*:"
exec "[#AUTH_PASSWORD#]"

## Fill in the new password
expect "*password:"
exec "[#NEW_PASSWORD#]"

## Confirm the new password
expect "*password:"
exec "[#NEW_PASSWORD#]"

## Validates if successfully changed
expect "*successfully"

Telnet

Sintaxe

ComandoDescrição
set-username-prompt ”string”Determina qual padrão de prompt do usuário localizar. O valor da pesquisa é um texto simples. Não é uma expressão regular.set-username-prompt ’Username:’
set-password-prompt ”string”Determina qual padrão de prompt de senha localizar. O valor da pesquisa é um texto simples. Não é uma expressão regular.set-password-prompt ’Password:’
set-new-line-mode [unixwindowsmac]Determina qual sistema breakline deve ser usado.set-new-line-mode ’unix’
set-no-authenticateConfigura o executor para pular a etapa de autenticação.set-no-authenticate
send ”command”Envia o comando para o servidor de destino sem inserir o caractere de quebra de linha automaticamente no final.send ’passwd’
exec ”command”Envia o comando para o servidor de destino incluindo o caractere de quebra de linha no final.
expect ”pattern”Espera até que o texto desejado apareça.expect ’changed!’
endInterrompe a conexão com o servidor de destino.end

Exemplo para um 3com Switch 5500 Family

## Waiting username
expect "*:"
exec "[#USERNAME#]"

## Waiting password
expect "*:"
exec "[#CURRENT_PASSWORD#]"

## Enter system-view
expect "*>"
exec "system-view"

## Enter local user view
expect "*]"
exec "local-user [#USERNAME#]"

expect "*]"
exec "password cipher [#NEW_PASSWORD#]"

## Exit to user.
expect "*]"
exec "quit"

## Exit to system view.
expect "*]"
exec "quit"

expect "*>"
exec "quit"

Windows RM

O dispositivo alvo precisa da conectividade Microsoft®Windows®Remote Management habilitada e autorizada.

Sintaxe

CommandDescription
!unsecureDetermina o uso de protocolo inseguro para troca.!unsecure
!reload-passwordForça a substituição da senha atual pelo novo valor de senha.!reload-password
!sleep secondsAguarda pelo determinado número de segundos para executar o comando.!sleep 30
!change-passwordSolicita a execução de mudança de senha do usuário alvo desta automação.!change-password
powershell cmdExecuta o comando powershell no servidor remoto.powershell Set-ADAccountPassword -Identity``[#username#] -Reset -NewPassword (ConvertTo-SecureString``-AsPlainText ”[#NEW_PASSWORD#]” -Force)

Exemplo para dispositivos que possuem Windows RM sobre HTTPS

## change user password
!change-password

Exemplo para dispositivos que possuem Windows RM sobre HTTP

!unsecure

## change user password
!change-password

Exemplo de alteração de senha no arquivo de configuração via PowerShell

powershell (Get-Content .Desktop\Web.config) | Foreach-Object {$_
-replace 'password=([^;"]+)','password=[#NEW_PASSWORD#]'} |
Set-Content .Desktop\Web.config

Exemplo de alteração de senha de aplicação COM + usando PowerShell

## Change user password
!change-password

## Replicate the new password into COM+ application
powershell $comAdmin = New-Object -com ("COMAdmin.COMAdminCatalog.1")[nl]$applications = $comAdmin.GetCollection("Applications")[nl]$applications.Populate()[nl]foreach ($application in $applications)[nl]{[nl]$appName = $application.Value("Name")[nl]$appIdentity = $application.Value("Identity")[nl]if ($appIdentity -eq "[#ADD_INFO#]\[#USERNAME#]") {[nl]$application.Value("Password") = "[#NEW_PASSWORD#]"[nl]$comAdmin.ShutdownApplication($appName)[nl]$applications.SaveChanges()[nl]$comAdmin.StartApplication($appName)[nl]}[nl]}

Exemplo de alteração de senha para Windows Autologon usando PowerShell

## Change user password
!change-password

## Replicate the new password into Windows registry
powershell $RegPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"[nl]
Set-ItemProperty $RegPath "AutoAdminLogon" -Value "1" -type String[nl]
Set-ItemProperty $RegPath "DefaultDomain" -Value "[#DOMAIN#]" -type String[nl]
Set-ItemProperty $RegPath "DefaultUsername" -Value "[#USERNAME#]" -type String[nl]
Set-ItemProperty $RegPath "DefaultPassword" -Value "[#PASSWORD#]" -type String

Exemplo para IIS Website Application Pool

## Change user password
!change-password

## Replicate the new password into IIS application pool
C:\Windows\System32\inetsrv\appcmd.exe set config /section:applicationPools /"[name='[#ADD_INFO#]']".processModel.identityType:SpecificUser /"[name='[#ADD_INFO#]']".processModel.userName:[#USERNAME#] /"[name='[#ADD_INFO#]']".processModel.password:[#NEW_PASSWORD#]

Windows RPC

O dispositivo alto precisa da conectividade Microsoft®Windows®RPC habilitada e autorizada.

Sintaxe

Este executor aceita qualquer comando Microsoft®Windows®RPC e alguns comandos dedicados do senhasegura , começando com exclamação.

CommandDescription
!netsmb-passwordSolicita e execução de troca de senha para o usuário alvo desta automação.!netsmb-password
!reload-passwordForça a substituição da senha atual pelo valor da nova senha.!reload-password
!sleep secondsAguarda o determinado número de segundos determinado para execução do próximo comando.!sleep 30

Alterar a senha de um usuário de domínio

## Changing account using executor command alias
!netsmb-password

## You can also execute a native RPC command
## net user [#USERNAME#] [#NEW_PASSWORD#] /domain

Altera a senha de um usuário local e atualizar a senha da conta do Windows do usuário local

## Change password
net user [#USERNAME#] [#NEW_PASSWORD#]

## Waiting three seconds
!sleep 3

## Update password for "Defrag"
schtasks /Change /RU [#USERNAME#] /RP [#NEW_PASSWORD#] /TN Defrag

Alterar a senha de um usuário local e atualizar a senha da conta Windows Service

## Change password
net user [#USERNAME#] [#NEW_PASSWORD#]

## Waiting three seconds
!sleep 3

sc config [#ADD_INFO#] obj= [#USERNAME#] password= [#NEW_PASSWORD#]

MySQL

Sintaxe

Você pode executar qualquer MySQL query de administrador ou até mesmo queries em bancos de dados.

Você também pode chamar funções do MySQL ou funções específicas de bancos de dados. A única limitação é chamar ou criar procedimentos armazenados.

Exemplo de troca de senha de usuário

ALTER USER '[#USERNAME#]'@'[#ADD_INFO#]' IDENTIFIED BY '[#NEW_PASSWORD#]';
FLUSH PRIVILEGES;

Oracle

Sintaxe

Você pode executar qualquer Oracle query de administrador ou até mesmo queries em bancos de dados.

Você também pode chamar funções do Oracle ou funções específicas de bancos de dados. A única limitação é chamar ou criar procedimentos armazenados.

Exemplo de troca de senha de usuário

CONN [#USERNAME#]@[#ADD_INFO#]
ALTER USER [#USERNAME#] IDENTIFIED BY [#NEW_PASSWORD#]

PostgreSQL

Sintaxe

Você pode executar qualquer PostgreSQL query de administrador ou até mesmo queries em bancos de dados.

Você também pode chamar funções do PostgreSQL ou funções específicas de bancos de dados. A única limitação é chamar ou criar procedimentos armazenados.

Exemplo de troca de senha de usuário

ALTER USER [#USERNAME#] WITH PASSWORD '[#NEW_PASSWORD#]';

SQL Server

Sintaxe

Você pode executar qualquer SQL Server query de administrador ou até mesmo queries em bancos de dados.

Você também pode chamar funções do SQL Server ou funções específicas de bancos de dados. A única limitação é chamar ou criar procedimentos armazenados.

Exemplo de troca de senha de usuário

ALTER LOGIN [#USERNAME#] WITH PASSWORD = '[#NEW_PASSWORD#]' OLD_PASSWORD = '[#CURRENT_PASSWORD#]' UNLOCK;

Tk Expect

Este plugin usa o binário TK Expect para interagir usando um poderoso interpretador stdout.

Sintaxe

Você pode usar o manual do TK Expect2 para criar seu próprio script.

Exemplo de troco de senha para IBM AS400

use telnet script
expect {
"User . ." {
send "[#USERNAME#]\t"
exp_continue
} "Password . ." {
send "[#CURRENT_PASSWORD#]\r\n"
exp_continue
} "Selection or command" {
send "chgpwd\r\n"
exp_continue
} "Current password . ." {
send "[#CURRENT_PASSWORD#]\r\n"
exp_continue
} "New password . ." {
send "[#NEW_PASSWORD#]\r"
exp_continue
} "New password (to verify)" {
send "[#NEW_PASSWORD#]\r"
exp_continue
} "Password changed successfully." {
send "\r"
exit 0
} incorrect {
send_user "FAILURE INCORRECT"
exit 1
} timeout {
send_user "FAILURE TIMEOUT"
exit 1
} eof {
send_user "FAILURE EOF"
exit 1
}
}

VMWare ESXi

Este plugin vai interagir com o console binário administrativo VMWare ESXi esxcli.

Sintaxe

A sintaxe original do comando deverá ser usada esxcli.

Definir uma senha de usuário usando o exemplo de comando esxcli "system account set"

system account set -i '[#USERNAME#]' -p '[#NEW_PASSWORD#]' -c '[#NEW_PASSWORD#]'

x3270 IBM Terminal Emulator

Executor para mainframes IBM 3270. Você pode interagir em interfaces de aplicativos de mainframe interpretando seu design.

Sintaxe

Alguns dos comandos linux x32703 foram substituídos por apelidos de executor para tornar a integração com o senhasegura segura e fácil.

ComandoDescrição
timeout [segundos]Algumas conexões de mainframes, ou algumas ações, podem travar. Para evitar essa situação, você pode configurar os segundos de tempo limite. Este tempo limite é o tempo máximo decorrido que toda a operação pode levar. Por padrão, é configurado para 5 segundos.Este comando deve ser usado antes do comando connect. timeout 300
sleep [segundos]Aguarda o tempo em segundos. Use este comando se precisar esperar que o mainframe execute alguma ação. Este sleep não será enviado para o mainframe.sleep 3
echo [string]Ecoa uma string nos logs de operação do executor. Esta mensagem ecoada não será enviada para o mainframe.echo Starting authentication step
connectExecutará a conexão do mainframe para iniciar a etapa de interação, resultando em uma ação Connect.connect
search [data][x,y,r,c]Irá pesquisar o aplicativo de mainframe renderizado para a coordenada fornecida e comparar com a string de dados fornecida. Interromperá a execução com status de falha se não for igual.A coordenada deve ser composta por 4 variáveis ​​de posição.O comando será traduzido para a ação Ascii.* x: Número da linha inicial começando por 0;
  • y: Coluna inicial de char começando por 0;
  • r: Número de linhas a serem retornadas a partir de 1;
  • c: Número de colunas a serem retornadas a partir de 1;search SUCCESSFUL 10,17,1,10 | | search_not [data][x,y,r,c] | Semelhante a search. Mas irá falhar caso a string fornecida não for encontrada.search_not FAILURE 10,17,1,7 | | send [data] | Insira alguns dados para o aplicativo de destino. Este comando pode aceitar sequências de escape de string.Este comando será traduzido para a ação String() action.send T01281\t2918\r | | screenshot | Irá entrar no log de operação do executor toda a tela ASCII renderizada (terminal 24x80 apenas).screenshot | | disconnect | Realizará um desligamento da conexão do mainframe .O comando será traduzido para a ação Disconnect().disconnect |

Como trocar a senha do usuário para um exemplo de aplicativo de mainframe

timeout 350

## AUTHENTICATION STEP ##################

echo Starting connection

connect

sleep 3

echo Performing login
search USER: 20,2,1,5

send [#USERNAME#]\t[#CURRENT_PASSWORD#]\r

echo Result screen
screenshot

## PASSWORD CHANGE STEP ##################

search USER: [C] CHANGE PASSWORD 10,5,1,19

send C\r[#NEW_PASSWORD#]\t[#NEW_PASSWORD#]\r

search_not FAILURE 12,70,1,7
search SUCCESS 12,70,1,7

echo Result screen
screenshot

disconnect