Spaces:
Runtime error
Runtime error
| CPSL (Custom Process Scripting Language) Documentation | |
| 1. Introduction | |
| CPSL is a domain-specific scripting language designed for automating server management, database operations, and system administration tasks. It enables efficient interaction with servers, execution of shell commands, and control over processes and services. | |
| 2. Commands Overview | |
| - R_ConnectServer: Connects to a remote server using its hostname or IP address. | |
| Example: | |
| R_ConnectServer "<Server_Name>" | |
| - ExecuteShellCommandEnter: Executes a shell command on the connected server with an optional timeout. | |
| Example: | |
| ExecuteShellCommandEnter "hostname", "$", 5000 | |
| - R_DisconnectSSH: Disconnects the session from the connected server. | |
| Example: | |
| R_DisconnectSSH | |
| - GetServerPass: Retrieves the password for a server. | |
| Example: | |
| GetServerPass("<Environment>", "<Server>", "<Key>") | |
| - GetServerUser: Retrieves the username for a server. | |
| Example: | |
| GetServerUser("<Environment>", "<Server>", "<Key>") | |
| 3. Common Scripting Tasks | |
| 3.1 Update Hostname | |
| Updates the hostname on a server and verifies the change. | |
| R_ConnectServer "<Server_Name>" | |
| ExecuteShellCommandEnter "sudo su - root", "$", 5000 | |
| ExecuteShellCommandEnter "hostnamectl set-hostname <New_Hostname>", "$", 5000 | |
| $v1 = ExecuteShellCommandEnter "hostname", "$", 5000 | |
| if (v1.contains("<New_Hostname>")) then | |
| R_DisconnectSSH | |
| return true | |
| else | |
| R_DisconnectSSH | |
| return false | |
| end | |
| 3.2 Container Platform Operations | |
| Example for OCP login and operations: | |
| R_ConnectServer "<Server_Name>" | |
| ExecuteShellCommandEnter "oc login <Protocol>://<FQDN>:<Port> -u <Username> -p <Password>", "$", <Login_Timeout> | |
| ExecuteShellCommandEnter "oc project <Project_Name>", "$", <Project_Timeout> | |
| ExecuteShellCommandEnter "<Scale_Command>", "$", <Operation_Timeout> | |
| $v1 = ExecuteShellCommandEnter "<Status_Command>", "$", <Status_Timeout> | |
| if (v1.contains("<Status_Pattern>")) then | |
| R_DisconnectSSH | |
| return true | |
| else | |
| R_DisconnectSSH | |
| return false | |
| end | |
| 3.3 Service Instance Management | |
| Example for service control: | |
| R_ConnectServer "<Server_Name>" | |
| ExecuteShellCommandEnter "sudo su - <Service_User>", "$", <Auth_Timeout> | |
| ExecuteShellCommandEnter "cd <Service_Path>", "$", <Path_Timeout> | |
| $v1 = ExecuteShellCommandEnter "sh <Service_Script>", "$", <Execute_Timeout> | |
| if (v1.contains("<Status_Pattern>")) then | |
| R_DisconnectSSH | |
| return true | |
| else | |
| R_DisconnectSSH | |
| return false | |
| end | |
| 3.4 Log Monitoring with Loop | |
| Example for continuous log monitoring: | |
| R_ConnectServer "<Server_Name>" | |
| ExecuteShellCommandEnter "cd <Log_Path>", "$", <Path_Timeout> | |
| loop | |
| $v1 = ExecuteShellCommandEnter "tail -100 <Log_File>", "$", <Monitor_Timeout> | |
| if (v1.contains("<Success_Pattern>")) then | |
| R_DisconnectSSH | |
| clearfile | |
| else | |
| Wait <Interval> | |
| Breakloopaftercycle(<Max_Cycles>) | |
| goto loop | |
| end | |
| 3.5 File Operations | |
| Example for file management: | |
| R_ConnectServer "<Server_Name>" | |
| ExecuteShellCommandEnter "cd <Path>", "$", <Path_Timeout> | |
| $v1 = ExecuteShellCommandEnter "<File_Operation>", "$", <Operation_Timeout> | |
| if (v1.contains("<Success_Pattern>")) then | |
| R_DisconnectSSH | |
| return true | |
| else | |
| R_DisconnectSSH | |
| return false | |
| end | |
| 3.6 Start EnterpriseLink Cluster Server | |
| Starts the EnterpriseLink Cluster Server service and verifies it. | |
| R_ConnectServer "<Server_Name>" | |
| ExecuteShellCommandEnter "sudo su - root", "$", 5000 | |
| $v1 = ExecuteShellCommandEnter "/etc/init.d/EnterpriseLinkClusterServer start", "$", 5000 | |
| if (v1.contains("Starting EnterpriseLink Cluster Server")) then | |
| R_DisconnectSSH | |
| return true | |
| else | |
| R_DisconnectSSH | |
| return false | |
| end | |
| 3.7 Copy Files to Another Server | |
| Copies a file from one server to another using SCP. | |
| R_ConnectServer "<Source_Server_Name>" | |
| ExecuteShellCommandEnter "scp <File_Path> <Destination_User>@<Destination_IP>:<Destination_Path>", "$", 5000 | |
| ExecuteShellCommandEnter "yes", "$", 5000 | |
| $v1 = ExecuteShellCommandEnter "ls <Destination_Path>", "$", 5000 | |
| if (v1.contains("<File_Name>")) then | |
| R_DisconnectSSH | |
| return true | |
| else | |
| R_DisconnectSSH | |
| return false | |
| end | |
| 3.8 MySQL Operations | |
| Starts MySQL replication and verifies the process. | |
| R_ConnectServer "<Server_Name>" | |
| ExecuteShellCommandEnter "mysql -u <Username> -p", "$", 5000 | |
| ExecuteShellCommandEnter "start slave;", "$", 5000 | |
| $v1 = ExecuteShellCommandEnter "show slave status\G", "$", 5000 | |
| if (v1.contains("Running")) then | |
| R_DisconnectSSH | |
| return true | |
| else | |
| R_DisconnectSSH | |
| return false | |
| end | |
| 3.9 Manage SnapMirror | |
| Quiesce SnapMirror Replication: | |
| R_ConnectServer "<Storage_Server_Name>" | |
| $v1 = ExecuteShellCommandEnter "snapmirror quiesce -destination-path <Path>", "$", 5000 | |
| if (v1.contains("Operation succeeded")) then | |
| R_DisconnectSSH | |
| return true | |
| else | |
| R_DisconnectSSH | |
| return false | |
| end | |
| Break SnapMirror Replication: | |
| R_ConnectServer "<Storage_Server_Name>" | |
| $v1 = ExecuteShellCommandEnter "snapmirror break -destination-path <Path>", "$", 5000 | |
| if (v1.contains("Operation succeeded")) then | |
| R_DisconnectSSH | |
| return true | |
| else | |
| R_DisconnectSSH | |
| return false | |
| end | |
| 4. Multiple Server Operation Patterns | |
| 4.1 Single Server, Multiple Operations | |
| R_Connect Server "<Server_Name>" | |
| ExecuteShellCommandEnter "sudo su - <User>","",<Timeout> | |
| $v1 = ExecuteShellCommandEnter "<Command_1>","",<Timeout_1> | |
| if($v1.notcontains("<Success_Pattern_1>")) then | |
| R_DisconnectSSH | |
| return false | |
| else | |
| $v2 = ExecuteShellCommandEnter "<Command_2>","",<Timeout_2> | |
| if($v2.notcontains("<Success_Pattern_2>")) then | |
| R_DisconnectSSH | |
| return false | |
| else | |
| R_DisconnectSSH | |
| return true | |
| end | |
| end | |
| 4.2 Multiple Servers, Sequential Operations | |
| R_Connect Server "<Server_1>" | |
| ExecuteShellCommandEnter "sudo su - <User_1>","",<Timeout> | |
| $v1 = ExecuteShellCommandEnter "<Command_1>","",<Timeout_1> | |
| if($v1.notcontains("<Success_Pattern_1>")) then | |
| R_DisconnectSSH | |
| return false | |
| else | |
| R_Connect Server "<Server_2>" | |
| ExecuteShellCommandEnter "sudo su - <User_2>","",<Timeout> | |
| $v2 = ExecuteShellCommandEnter "<Command_2>","",<Timeout_2> | |
| if($v2.notcontains("<Success_Pattern_2>")) then | |
| R_DisconnectSSH | |
| return false | |
| else | |
| R_DisconnectSSH | |
| return true | |
| end | |
| end | |
| 4.3 Multiple Servers, Parallel Operations | |
| R_Connect Server "<Server_1>" | |
| ExecuteShellCommandEnter "sudo su - <User_1>","",<Timeout> | |
| $v1 = ExecuteShellCommandEnter "<Command_1>","",<Timeout_1> | |
| R_DisconnectSSH | |
| R_Connect Server "<Server_2>" | |
| ExecuteShellCommandEnter "sudo su - <User_2>","",<Timeout> | |
| $v2 = ExecuteShellCommandEnter "<Command_2>","",<Timeout_2> | |
| R_DisconnectSSH | |
| R_Connect Server "<Server_3>" | |
| ExecuteShellCommandEnter "sudo su - <User_3>","",<Timeout> | |
| $v3 = ExecuteShellCommandEnter "<Command_3>","",<Timeout_3> | |
| R_DisconnectSSH | |
| if($v1.notcontains("<Success_Pattern_1>") or $v2.notcontains("<Success_Pattern_2>") or $v3.notcontains("<Success_Pattern_3>")) then | |
| return false | |
| else | |
| return true | |
| end | |
| 4.4 Best Practices for Multiple Server Operations: | |
| - Use appropriate timeout values for each operation | |
| - Implement proper error handling and validation for each server connection and command execution | |
| - Disconnect from servers after completing operations or in case of errors | |
| - Use consistent naming conventions for variables and placeholders | |
| - Structure the script logically, grouping related operations together | |
| - Consider using loops for repetitive operations across multiple servers | |
| - Implement appropriate logging or output messages for troubleshooting | |
| - Use .contains() or .notcontains() based on the expected output patterns | |
| - Ensure proper indentation and nesting of if-else statements for readability | |
| Common Timeout Values: | |
| - Authentication: 5000-60000 | |
| - Basic operations: 5000 | |
| - Service operations: 120000-300000 | |
| - Platform operations: 60000-120000 | |
| - Recovery operations: 300000-1200000 | |
| Best Practices: | |
| - Use empty string for second parameter | |
| - Include R_DisconnectSSH in all paths | |
| - Validate each operation before proceeding | |
| - Match number of 'end' statements with if blocks | |
| - Follow proper nesting structure | |
| - Use appropriate timeout values | |
| - Use .contains() or .notcontains() based on validation needs | |
| 4.5 Best Practices for Multiple Server Operations: | |
| - Use empty string "" for second parameter in ExecuteShellCommandEnter | |
| - Implement proper timeout values for each operation | |
| - Follow nested if-else structure for validations | |
| - Include R_DisconnectSSH in each failure path | |
| - Match 'end' statements with if blocks | |
| - Use .contains() or .notcontains() based on validation needs | |
| - Maintain consistent prompt patterns | |
| - Follow proper command sequence | |
| - Implement appropriate validation checks | |
| 5. Best Practices | |
| - Always sanitize inputs to avoid hardcoding sensitive information | |
| - Use placeholders in templates and replace them with real values during execution | |
| - Test scripts in a controlled environment before deploying them in production | |
| - Set appropriate timeout values based on operation type | |
| - Implement proper validation checks for operations | |
| - Include error handling for all operations | |
| 6. Common Timeout Values | |
| - Basic operations: 5000 | |
| - Authentication operations: 60000 | |
| - Path operations: 60000 | |
| - Service operations: 300000 | |
| - Build operations: 900000 |