Example scripts

Example scripts that you can use in your lifecycle scripts.

Track setup scripts

Wait for bootstrap

Wait for the Instruqt bootstrap process to complete.

#!/bin/bash
set -euxo pipefail

until [ -f /opt/instruqt/bootstrap/host-bootstrap-completed ]; do
    echo "Waiting for instruqt bootstrap to complete"    sleep 1
done

The bootstrap process may overwrite user files like .bashrc. Wait is encouraged!

Wait for service

Wait for a specific web service in your setup script to finish booting.

while ! curl --fail --output /dev/null https://<hostname>:<port>/<path> 
do
    sleep 1
done

Create a file

Create a file using heredoc method.

cat > /file/to/create <<EOF
# Some configuration file
setting_one = true
another_setting = false
EOF

You can append to a file by using >> as opposed to >.

Download files

Download files to the local system.

git clone https://githost.com/repo <local_dir>

Start background process

Start a process in the background so your script does not hang.

nohup ./myprogram > foo.out 2> foo.err < /dev/null & disown

Challenge check scripts

File exists

Check if a file exists:

#!/bin/bash
set -euxo pipefail

if [ -f /home/user/file.txt ]; then
    echo "The file at /home/user/file.txt exists"
fi

File doesn't exist

Check if a file doesn't exist (or is not a file):

#!/bin/bash
set -euxo pipefail

if [ ! -f /home/user/file.txt ]; then
    fail-message "No file was found at /home/user/file.txt"
fi

Directory exists

Check if a directory exists:

#!/bin/bash
set -euxo pipefail

if [ -d /root/folder ]; then
    echo "The directory at /root/folder exists"
fi

Directory doesn't exist

Use the following code in your life cycle script to check if a folder doesn't exist (or is not a directory)

#!/bin/bash
set -euxo pipefail

if [ ! -d /root/folder ]; then
    fail-message "The folder at /root/folder doesn't exists"
fi

File contains certain text

Check if a file contains certain text.

#!/bin/bash
set -euxo pipefail

if ! grep "text to find" /path/to/file; then
    fail-message "The file doesn't contain the required text"
fi

Specific command is installed

Check that a specific command is executable with the -x flag.

#!/bin/bash
set -euxo pipefail

if ! [[ -x /usr/local/bin/command ]]; then
  fail-message "Oops, command was not found or is not executable."
fi

Service is running

Check if a service is running.

#!/bin/bash
if pgrep -x SERVICE >/dev/null; then
    echo "The X service is running"
fi

Replace SERVICE with a service name running on that system.

Last updated

Was this helpful?