SSH Built-ins ¶
SSH Built-ins enable the remote execution of any command on a configured SSH server.
Example
1 2 | Given check that the file "myfile.txt" is present in the folder "/Users/QiTASC/Desktop/" And ping |
Configuration ¶
Multiple SSH servers and host keys can be added to this configuration. Three different types of SSH authentication can be configured:
-
Username and password
-
Username and identity path
-
Username and Kerberos
Configuration - Username and Password¶
Syntax
1 2 3 4 5 6 7 8 9 | SSHServers { <hostKey String> { host = <String> port = <Number> username = <String> password = <String> connectTimeoutMillis = <Number> } } |
Parameters
-
hostkey - The name of the SSH server's host key
-
host - The domain or IP address of the SSH server
-
port - The port the SSH server listens on
- Default is set to
22
- Default is set to
-
username - The username used for authentication
-
connectTimeoutMillis (Optional) - The timeout in milliseconds until the connection is established
- Default is set to
10000
- Default is set to
Example
1 2 3 4 5 6 7 8 9 | SSHServers { qitascTestSSHServer { host = "localhost" port = 38 username = "YourUsername" password = "YourPassword" connectTimeoutMillis = 30000 } } |
Configuration - Username and Identity Path¶
Syntax
1 2 3 4 5 6 7 8 9 | SSHServers { <hostKey String> { host = <String> port = <Number> username = <Number> identityPath = <String> connectTimeoutMillis = <Number> } } |
Parameters
-
hostkey - The name of the SSH server's host key
-
host - The domain or IP address of the SSH server
-
port - The port the SSH server listens on
- Default is set to
22
- Default is set to
-
username - The username used for authentication
-
identityPath - The private SSH key used for authentication
-
connectTimeoutMillis (Optional) - The timeout in milliseconds until the connection is established
- Default is set to
10000
- Default is set to
Example
1 2 3 4 5 6 7 8 9 | SSHServers { qitascTestSSHServer2 { host = "localhost" port = 35 username = "YourUsername" identityPath = "Users/YourName/.ssh/" connectTimeoutMillis = 30000 } } |
Configuration - Username and Kerberos¶
Syntax
1 2 3 4 5 6 7 8 9 | SSHServers { <hostKey String> { host = <String> port = <Number> username = <String> enableKerberosAuthentication = <Boolean> connectTimeoutMillis = <Number> } } |
Parameters
-
hostkey - The name of the SSH server's host key
-
host - The domain or IP address of the SSH server
-
port - The port the SSH server listens on
- Default is set to
22
- Default is set to
-
username - The username used for authentication
-
enableKerberos - Enables Kerberos authentication
- Default is set to
false
- Default is set to
-
connectTimeoutMillis (Optional) - The timeout in milliseconds until the connection is established
- Default is set to
10000
- Default is set to
Example
1 2 3 4 5 6 7 8 | SSHServers { qitascTestSSHServer3 { host = "10.0.0.1" username = "YourUsername" enableKerberosAuthentication = true connectTimeoutMillis = 30000 } } |
Syntax
1 | execute(<hostKey String>, <command String>) |
Parameters
-
hostKey - The name of the key configured in the
SSHServers
configuration -
command - Can be any SSH command
Example
1 | execute(qitascTestSSHServer, command) |
An interactive shell session can be executed from within a test case:
Syntax
1 2 3 4 5 6 | mySession := openShellSession(<HostKey String>) mySession.execute(<Command String>) mySession.readOutput() mySession.readError() mySession.readUntil(<Text String>, <timeoutMilliseconds Number>) mySession.close() |
Parameters
-
hostKey - The name of the key configured in the
SSHServers
configuration- This is used for opening and returning the interactive shell session so that commands can then be executed using
execute
- This is used for opening and returning the interactive shell session so that commands can then be executed using
-
command - This can be any SSH command to be executed
-
text - When using the
readUntil
method, intaQt will wait until this text appears within a specified timeout -
timeoutMilliseconds - The amount of time in milliseconds until a session will timeout when using
readUntil
Additionally, the readOutput
method returns the session's standard output as a string, while readError
returns the session's standard error as a string. Using close()
will end the interactive shell session. If close()
is not used, the session will close upon the test case's completion.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | session := openShellSession("qitascTestSSHServer") session.execute("CONFIG_PATH=/some/path; export CONFIG_PATH") println(session.readOutput()) session.execute("cd /some/other/path") println(session.readOutput()) session.execute("echo " + parameters + " > parameters.txt") session.execute("run-the-script ; echo 'END OF' 'EXECUTION'") output := session.readUntil("END OF EXECUTION", 45000) println(output) if ( output.contains("FAILURE") ) then println("Execution failed") assert false end |