├── .env
├── LICENSE
├── README.md
├── examples
├── cloudclis.sh
├── curl.sh
├── kubectl.sh
├── langcheck.sh
├── output_test.sh
└── sshwithvpn.sh
└── screenshots
├── configuration.png
└── manager.png
/.env:
--------------------------------------------------------------------------------
1 | # WARNING: DO NOT INCLUDE DOUBLE QUOTES HERE
2 |
3 | # Public repo
4 | GIT_REPO=https://github.com/itforgeuk/scripts-examples
5 | GIT_BRANCH=main
6 | GIT_SCR=examples/curl.sh
7 |
8 | # Private repo
9 | # GIT_REPO=git@github.com:yourrepo/private-scripts
10 | # GIT_BRANCH=main
11 | # GIT_SCR=scripts/scale-up-my-servers.sh
12 |
13 | # Set and enable this if you want to access your AWS account
14 | # AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxx
15 | # AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
16 | # AWS_DEFAULT_REGION=xx-xxxx-x
17 |
18 | # App's defaults for Google Cloud and Kubernetes
19 | KUBECONFIG=/tmp/kubeconfig
20 | GOOGLE_APPLICATION_CREDENTIALS=/tmp/google-auth.json
21 |
22 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Scripts Actions Documentation
2 | Documentation and scripts examples for the [Script Actions App](https://play.google.com/store/apps/details?id=com.itforge.devopstool)
3 |
4 | ## Description
5 | Run or schedule powerful well tested shell scripts, Python or NodeJS code from your phone in a secure temporary execution cloud environment.
6 | It is a unique solution that provides easy and fast access in a secure execution environment with +100 Linux commands and tools available to use them from the phone with one tap! No laptops, no servers needed.
7 |
8 | **You can build, sell, load and execute scripts from public or private repositories.**
9 |
10 | ## Security
11 | Each execution environment is dedicated with isolated storage, hardware and networking resources.
12 | The networking allows outbound traffic but inbound traffic is blocked.
13 | Following the best practices, we are not storing credentials, API keys or other secrets. This information is injected on-demand in the temporary execution environment which is destroyed after the execution. Everything is protected behind an OAUTH 2.0 Authentication MFA enabled layer.
14 |
15 | ### If you interesting for a PaaS license (private infrastructure) please contact us from the contact form in-app.
16 |
17 | ## Use cases examples
18 | * [Create simple curl requests to test your APIs availability](examples/curl.sh)
19 | * [Use Cloud CLI tools to scale your infrastructure](examples/cloudclis.sh)
20 | * [Access your Kubernetes cluster](examples/kubectl.sh)
21 | * [SSH connection to remote hosts with/without server-side VPN](examples/sshwithvpn.sh)
22 | * To execute Disaster Recovery Actions.
23 | * For APIs or IT infrastructure health checks.
24 | * For manual recovery actions cases.
25 | * For business scheduled actions.
26 | * For servers management or scaling.
27 | * For profit & fun.
28 | * **You are not a Developer but you need a tested script ready to run it from your phone?** [Let us know](https://github.com/itforgeuk/Script-Actions/discussions/1)
29 |
30 | ## How to build and test your scripts
31 | ### Requirements
32 | * You need a Private or Public GIT repository. If your repository is private, don't forget to set its SSH key in-app secret manager.
33 | * The containerazed execution environment is read-only but you can store temp data under /tmp up to 512 MB.
34 | * Your code execution duration must not exceed 15 mins.
35 | * Local Docker engine. (See [How to install it](https://docs.docker.com/engine/install/))
36 | * GIT (See how to install [git for windows](https://gitforwindows.org/))
37 | * **Development skills**.
38 |
39 | ### Steps
40 | 1. Create your Git repository. If is private you can use a separate SSH key for this project and test it with a command like
41 | >`GIT_SSH_COMMAND="ssh -i ~/.ssh/your-key " git clone git@github.com:youraccount/private-repo.git`
42 |
43 | or set core.sshCommand:
44 | >`git config core.sshCommand "ssh -i ~/.ssh/id_rsa_example -F /dev/null"`
45 | 2. Edit the .env file and set your reporitory details.
46 | 3. Run your script to test it locally:
47 | > Syntax example for public repository:
48 |
49 | >`docker run -it --rm --env-file .env itforgeuk/cloudshell:latest sh -c '/checkrepo.sh'`
50 |
51 | > Syntax example for private repository:
52 |
53 | >`docker run -it --rm --env-file .env -v ~/.ssh/your_ssh_key:/tmp/.ssh/id_rsa itforgeuk/cloudshell:latest sh -c '/checkrepo.sh'`
54 |
55 | > Syntax example with Google Cloud Service Account authentication
56 | > `docker run -it --rm --env-file .env -v /full/path/google-auth.json:/tmp/google-auth.json itforgeuk/cloudshell:latest sh -c '/checkrepo.sh'`
57 |
58 | > Syntax example with Kubernetes authentication
59 | > `docker run -it --rm --env-file .env -v ~/.kube/config:/tmp/kubeconfig itforgeuk/cloudshell:latest sh -c '/checkrepo.sh'`
60 |
61 | ### Tips
62 | * Try to minify your script output to get a more practical output in your app.
63 | * Avoid build steps in your script that can produce data size over limits and slow execution.
64 | * Test your credentials as env variables which will be the alternative of secrets manager in the app.
65 |
66 | ## How to run your scripts in app
67 | Your script is well tested and published to your repo. You can now add it in the app:
68 |
69 | 
70 |
71 | 1. Set your git repository in the "GIT repo" app field. The format for public github repos is:
72 | > https://github.com/yourrepo/yourproject
73 |
74 | or for private repos:
75 | > git@github.com:yourrepo/yourproject
76 | 2. Set your branch, tag or commit hash in the app field.
77 | 3. Set your script path in the app field. Do not start with '/'.
78 | 4. Be sure you have the necessary credentials set in the secret manager.
79 | 5. Set a shedule run if you like.
80 | 6. Save
81 | 7. Your script is ready. Now you can do changes in the repo without edit the action in the app.
82 |
83 | ## Questions
84 | If you read **all the above** but you still have a question you can [write us](https://github.com/itforgeuk/Script-Actions/discussions/1)
85 |
--------------------------------------------------------------------------------
/examples/cloudclis.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Use case example:
4 | # You own Kubernetes clusters, your auto-scaling didn't work and you need emergency capacity?
5 |
6 | # Cloud CLI tools official documentation:
7 | # https://aws.amazon.com/cli/
8 | # https://cloud.google.com/sdk/gcloud
9 | # https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
10 |
11 | # AUTHENTICATION:
12 | # You can authenticate with your cloud account by injecting the right environment variables in your environment.
13 | # IS NOT recommended to expose credentials within the scripts, only for tests purposes.
14 | # The best practice is to use your secret manager within the app with the right key names, for example:
15 | #
16 | # AWS. Set your API keys in your script (WARNING for AWS you cannot set them in the app's secret manager)
17 | # AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxx
18 | # AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
19 | # AWS_DEFAULT_REGION=us-west-2
20 | #
21 | # Google Service Account
22 | # https://cloud.google.com/docs/authentication/production
23 | # Attach your JSON service account key file in-app secrets manager
24 | #
25 | # Azure Service Principal
26 | # https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?toc=%2Fazure%2Fazure-resource-manager%2Ftoc.json&view=azure-cli-latest
27 | # https://lnx.azurewebsites.net/non-interactive-login-in-azure-cli-2-0/
28 | # Create a service principal with the az ad sp create-for-rbac command.
29 | # When creating a service principal, you choose the type of sign-in authentication it uses.
30 | # For AKS, first login locally with "az login", then generate a new kubeconfig with az aks get-credentials -n $AKS_NAME -g $RESGROUP --admin -f ~/.kube/config --overwrite-existing
31 |
32 | echo "==================================="
33 | echo "== Cloud CLIs example ==="
34 | echo "== Use scaling commands ==="
35 | echo "==================================="
36 | sleep 1
37 | echo -e "* You can use any cloud cli tool to scale UP or DOWN clusters...\n"
38 |
39 | # AWS. Authentication from env variables, scale your cluster
40 | echo "ERROR: did you set your creds in your scripts?"
41 | echo "aws autoscaling update-auto-scaling-group --desired-capacity=4 \
42 | --auto-scaling-group-name my-auto-scaling-group --health-check-type ELB \
43 | --health-check-grace-period 60"
44 | echo ""
45 | sleep 1
46 | # Google Cloud. Activate Google Service Account, set project, resize your group of servers
47 | echo "ERROR: did you set your creds in the secret manager?"
48 | echo 'gcloud auth activate-service-account --key-file=/tmp/google-auth.json'
49 | echo 'gcloud config set account $(gcloud auth list --format="value(account)")'
50 | echo '-> Scale my cluster to 4 nodes...'
51 | echo 'gcloud compute instance-groups managed resize NAME --size=4'
52 | echo ""
53 | sleep 1
54 | # Azure Cloud. See https://lnx.azurewebsites.net/non-interactive-login-in-azure-cli-2-0/
55 | echo "ERROR: did you set your creds in the secret manager?"
56 | echo 'az appservice plan update --number-of-workers 2 --name AppServiceManualScalePlan \
57 | --resource-group myResourceGroup'
58 | echo ""
59 | echo "## END OF EXECUTION ##"
--------------------------------------------------------------------------------
/examples/curl.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Case example:
4 | # You just received an email that one of your APIs is down and you have to check it
5 | echo "==================================="
6 | echo "== curl example ==="
7 | echo "== Print weather forcast ==="
8 | echo "==================================="
9 | sleep 1
10 | # Basic curl request example with python json parsing
11 | OUTPUT=$(curl -q https://api.tfl.gov.uk/AirQuality | python3 -m json.tool | grep forecastText | awk -F':' '{print $2}')
12 | echo -e "\n\n"
13 |
14 | echo $OUTPUT
15 | # For more similar example you can google it and check https://curl.se/docs/httpscripting.html
16 |
17 | echo ""
18 | echo "## END OF EXECUTION ##"
--------------------------------------------------------------------------------
/examples/kubectl.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # AUTHENTICATION
4 | # You can authenticate with your cloud account by injecting the right environment variables in your environment.
5 | # IS NOT recommended to expose credentials within the scripts, only for tests purposes.
6 | # The best practice is to use your secret manager within the app and attach your Kubernetes config file.
7 | echo "==================================="
8 | echo "== kubectl example ==="
9 | echo "== View Kubernetes pods ==="
10 | echo "==================================="
11 | sleep 1
12 | echo -e "* Simple kubectl client demo..."
13 | echo ""
14 | echo "kubectl version --client=true"
15 | echo "kubectl config get-contexts"
16 | # Select your context or use the default
17 | echo "kubectl config use-context thiscluster"
18 | sleep 1
19 | echo "kubectl get nodes -o wide"
20 | echo ""
21 | echo -e "\n* Please attach your kubecfg file in your secrets manager"
22 | echo ""
23 | echo "## END OF EXECUTION ##"
--------------------------------------------------------------------------------
/examples/langcheck.sh:
--------------------------------------------------------------------------------
1 | echo "==================================="
2 | echo "== Python/NodeJS example ==="
3 | echo "== Check versions ==="
4 | echo "==================================="
5 | sleep 1
6 |
7 | PYTHONV=$(python --version)
8 | PIPV=$(pip --version)
9 | NODEV=$(node --version)
10 | NPMV=$(npm --version)
11 | echo ""
12 | echo -e "-> Python version: $PYTHONV\n-> PIP version: $PIPV\n-> NODEJS version: $NODEV\n-> NPM version: $NPMV"
13 | echo ""
14 | echo "## END OF EXECUTION ##"
15 |
--------------------------------------------------------------------------------
/examples/output_test.sh:
--------------------------------------------------------------------------------
1 | echo "==================================="
2 | echo "== Bash Script example ==="
3 | echo "== Print 100 lines ==="
4 | echo "==================================="
5 | echo "Line 1 Sat 19 Feb 2022 14:11:20 GMT"
6 | echo "Line 2 Sat 19 Feb 2022 14:11:20 GMT"
7 | echo "Line 3 Sat 19 Feb 2022 14:11:20 GMT"
8 | echo "Line 4 Sat 19 Feb 2022 14:11:20 GMT"
9 | echo "Line 5 Sat 19 Feb 2022 14:11:20 GMT"
10 | echo "Line 6 Sat 19 Feb 2022 14:11:20 GMT"
11 | echo "Line 7 Sat 19 Feb 2022 14:11:20 GMT"
12 | echo "Line 8 Sat 19 Feb 2022 14:11:20 GMT"
13 | echo "Line 9 Sat 19 Feb 2022 14:11:20 GMT"
14 | echo "Line 10 Sat 19 Feb 2022 14:11:20 GMT"
15 | echo "Line 11 Sat 19 Feb 2022 14:11:20 GMT"
16 | echo "Line 12 Sat 19 Feb 2022 14:11:20 GMT"
17 | echo "Line 13 Sat 19 Feb 2022 14:11:20 GMT"
18 | echo "Line 14 Sat 19 Feb 2022 14:11:20 GMT"
19 | echo "Line 15 Sat 19 Feb 2022 14:11:20 GMT"
20 | echo "Line 16 Sat 19 Feb 2022 14:11:20 GMT"
21 | echo "Line 17 Sat 19 Feb 2022 14:11:20 GMT"
22 | echo "Line 18 Sat 19 Feb 2022 14:11:20 GMT"
23 | echo "Line 19 Sat 19 Feb 2022 14:11:20 GMT"
24 | echo "Line 20 Sat 19 Feb 2022 14:11:20 GMT"
25 | sleep 5
26 | echo "Line 21 Sat 19 Feb 2022 14:11:20 GMT"
27 | echo "Line 22 Sat 19 Feb 2022 14:11:20 GMT"
28 | echo "Line 23 Sat 19 Feb 2022 14:11:20 GMT"
29 | echo "Line 24 Sat 19 Feb 2022 14:11:20 GMT"
30 | echo "Line 25 Sat 19 Feb 2022 14:11:20 GMT"
31 | echo "Line 26 Sat 19 Feb 2022 14:11:20 GMT"
32 | echo "Line 27 Sat 19 Feb 2022 14:11:20 GMT"
33 | echo "Line 28 Sat 19 Feb 2022 14:11:20 GMT"
34 | echo "Line 29 Sat 19 Feb 2022 14:11:20 GMT"
35 | echo "Line 30 Sat 19 Feb 2022 14:11:20 GMT"
36 | echo "Line 31 Sat 19 Feb 2022 14:11:20 GMT"
37 | echo "Line 32 Sat 19 Feb 2022 14:11:20 GMT"
38 | echo "Line 33 Sat 19 Feb 2022 14:11:20 GMT"
39 | echo "Line 34 Sat 19 Feb 2022 14:11:20 GMT"
40 | echo "Line 35 Sat 19 Feb 2022 14:11:20 GMT"
41 | echo "Line 36 Sat 19 Feb 2022 14:11:20 GMT"
42 | echo "Line 37 Sat 19 Feb 2022 14:11:20 GMT"
43 | echo "Line 38 Sat 19 Feb 2022 14:11:20 GMT"
44 | echo "Line 39 Sat 19 Feb 2022 14:11:20 GMT"
45 | echo "Line 40 Sat 19 Feb 2022 14:11:20 GMT"
46 | sleep 6
47 | echo "Line 41 Sat 19 Feb 2022 14:11:20 GMT"
48 | echo "Line 42 Sat 19 Feb 2022 14:11:20 GMT"
49 | echo "Line 43 Sat 19 Feb 2022 14:11:20 GMT"
50 | echo "Line 44 Sat 19 Feb 2022 14:11:20 GMT"
51 | echo "Line 45 Sat 19 Feb 2022 14:11:20 GMT"
52 | echo "Line 46 Sat 19 Feb 2022 14:11:20 GMT"
53 | echo "Line 47 Sat 19 Feb 2022 14:11:20 GMT"
54 | echo "Line 48 Sat 19 Feb 2022 14:11:20 GMT"
55 | echo "Line 49 Sat 19 Feb 2022 14:11:20 GMT"
56 | echo "Line 50 Sat 19 Feb 2022 14:11:20 GMT"
57 | echo "Line 51 Sat 19 Feb 2022 14:11:20 GMT"
58 | echo "Line 52 Sat 19 Feb 2022 14:11:20 GMT"
59 | echo "Line 53 Sat 19 Feb 2022 14:11:20 GMT"
60 | echo "Line 54 Sat 19 Feb 2022 14:11:20 GMT"
61 | echo "Line 55 Sat 19 Feb 2022 14:11:20 GMT"
62 | echo "Line 56 Sat 19 Feb 2022 14:11:20 GMT"
63 | echo "Line 57 Sat 19 Feb 2022 14:11:20 GMT"
64 | echo "Line 58 Sat 19 Feb 2022 14:11:20 GMT"
65 | echo "Line 59 Sat 19 Feb 2022 14:11:20 GMT"
66 | echo "Line 60 Sat 19 Feb 2022 14:11:20 GMT"
67 | sleep 8
68 | echo "Line 61 Sat 19 Feb 2022 14:11:20 GMT"
69 | echo "Line 62 Sat 19 Feb 2022 14:11:20 GMT"
70 | echo "Line 63 Sat 19 Feb 2022 14:11:20 GMT"
71 | echo "Line 64 Sat 19 Feb 2022 14:11:20 GMT"
72 | echo "Line 65 Sat 19 Feb 2022 14:11:20 GMT"
73 | echo "Line 66 Sat 19 Feb 2022 14:11:20 GMT"
74 | echo "Line 67 Sat 19 Feb 2022 14:11:20 GMT"
75 | echo "Line 68 Sat 19 Feb 2022 14:11:20 GMT"
76 | echo "Line 69 Sat 19 Feb 2022 14:11:20 GMT"
77 | echo "Line 70 Sat 19 Feb 2022 14:11:20 GMT"
78 | echo "Line 71 Sat 19 Feb 2022 14:11:20 GMT"
79 | echo "Line 72 Sat 19 Feb 2022 14:11:20 GMT"
80 | echo "Line 73 Sat 19 Feb 2022 14:11:20 GMT"
81 | echo "Line 74 Sat 19 Feb 2022 14:11:20 GMT"
82 | echo "Line 75 Sat 19 Feb 2022 14:11:20 GMT"
83 | echo "Line 76 Sat 19 Feb 2022 14:11:20 GMT"
84 | echo "Line 77 Sat 19 Feb 2022 14:11:20 GMT"
85 | echo "Line 78 Sat 19 Feb 2022 14:11:20 GMT"
86 | echo "Line 79 Sat 19 Feb 2022 14:11:20 GMT"
87 | echo "Line 80 Sat 19 Feb 2022 14:11:20 GMT"
88 | sleep 9
89 | echo "Line 81 Sat 19 Feb 2022 14:11:20 GMT"
90 | echo "Line 82 Sat 19 Feb 2022 14:11:20 GMT"
91 | echo "Line 83 Sat 19 Feb 2022 14:11:20 GMT"
92 | echo "Line 84 Sat 19 Feb 2022 14:11:20 GMT"
93 | echo "Line 85 Sat 19 Feb 2022 14:11:20 GMT"
94 | echo "Line 86 Sat 19 Feb 2022 14:11:20 GMT"
95 | echo "Line 87 Sat 19 Feb 2022 14:11:20 GMT"
96 | echo "Line 88 Sat 19 Feb 2022 14:11:20 GMT"
97 | echo "Line 89 Sat 19 Feb 2022 14:11:20 GMT"
98 | echo "Line 90 Sat 19 Feb 2022 14:11:20 GMT"
99 | echo "Line 91 Sat 19 Feb 2022 14:11:20 GMT"
100 | echo "Line 92 Sat 19 Feb 2022 14:11:20 GMT"
101 | echo "Line 93 Sat 19 Feb 2022 14:11:20 GMT"
102 | echo "Line 94 Sat 19 Feb 2022 14:11:20 GMT"
103 | echo "Line 95 Sat 19 Feb 2022 14:11:20 GMT"
104 | echo "Line 96 Sat 19 Feb 2022 14:11:20 GMT"
105 | echo "Line 97 Sat 19 Feb 2022 14:11:20 GMT"
106 | echo "Line 98 Sat 19 Feb 2022 14:11:20 GMT"
107 | echo "Line 99 Sat 19 Feb 2022 14:11:20 GMT"
108 | echo "Line 100 Sat 19 Feb 2022 14:11:20 GMT"
109 |
--------------------------------------------------------------------------------
/examples/sshwithvpn.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # SSH AUTNENTICATION
4 | # Please use app's secret manager to set your SSH private key
5 | echo "========================================="
6 | echo "== SSH example ==="
7 | echo "== Login to remote host and view logs ==="
8 | echo "=========================================="
9 | sleep 1
10 |
11 | # Pull last 100 lines of the system logs
12 | echo ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null user@my.vpnaccessiblehost.com tail -100 /var/log/syslog
13 |
14 | echo ""
15 | echo "## END OF EXECUTION ##"
16 |
--------------------------------------------------------------------------------
/screenshots/configuration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/itforgeuk/Script-Actions/db04835436849175b82544029e21b7bc1ef17504/screenshots/configuration.png
--------------------------------------------------------------------------------
/screenshots/manager.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/itforgeuk/Script-Actions/db04835436849175b82544029e21b7bc1ef17504/screenshots/manager.png
--------------------------------------------------------------------------------