diff --git a/src/dockerfiles/satlab_remote_access/Dockerfile b/src/dockerfiles/satlab_remote_access/Dockerfile
index ea13388..bdb593b 100644
--- a/src/dockerfiles/satlab_remote_access/Dockerfile
+++ b/src/dockerfiles/satlab_remote_access/Dockerfile
@@ -20,6 +20,10 @@
 WORKDIR /
 RUN /sbin/apk add git
 
+COPY dockerfiles/satlab_remote_access/tools/host_command.py /usr/local/bin
+COPY dockerfiles/satlab_remote_access/tools/get_host_identifier /usr/local/bin
+COPY dockerfiles/satlab_remote_access/tools/update_system /usr/local/bin
+COPY dockerfiles/satlab_remote_access/tools/update_satlab /usr/local/bin
 COPY dockerfiles/satlab_remote_access/tools/satlab_setup /usr/local/bin
 COPY dockerfiles/satlab_remote_access/tools/get_dns_hosts /usr/local/bin
 COPY dockerfiles/satlab_remote_access/tools/force-update-cipd /usr/local/bin
@@ -56,7 +60,7 @@
 RUN  sed -i s/AllowTcpForwarding\ no/AllowTcpForwarding\ yes/ /etc/ssh/sshd_config
 
 # Change welcoming message.
-COPY dockerfiles/satlab_remote_access/motd /etc/
+COPY dockerfiles/satlab_remote_access/tools/motd /etc/
 RUN chmod 666 /etc/motd
 
 # Add jq to get service account key id from json file.
diff --git a/src/dockerfiles/satlab_remote_access/tools/get_host_identifier b/src/dockerfiles/satlab_remote_access/tools/get_host_identifier
new file mode 100644
index 0000000..bcec131
--- /dev/null
+++ b/src/dockerfiles/satlab_remote_access/tools/get_host_identifier
@@ -0,0 +1,13 @@
+#!/bin/sh
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# get_host_identifier gets the serial number for the satlab as a whole.
+#
+# sample output:
+#   1XXXXXXX1341333A
+
+set -eu
+
+exec python3 /usr/local/bin/host_command.py "$0"
diff --git a/src/dockerfiles/satlab_remote_access/tools/host_command.py b/src/dockerfiles/satlab_remote_access/tools/host_command.py
new file mode 100644
index 0000000..2e2d600
--- /dev/null
+++ b/src/dockerfiles/satlab_remote_access/tools/host_command.py
@@ -0,0 +1,85 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import docker
+import logging
+import os
+import sys
+
+from moblab_common import host_connector
+
+DOCKER_REGISTRY = "gcr.io/chromeos-partner-moblab/"
+
+def reboot():
+    """Reboot the docker host box."""
+    host_connector.HostServicesConnector().reboot()
+
+
+def factory_reset():
+    """Run a factory reset on the docker host box."""
+    host_connector.HostServicesConnector.factory_reset()
+
+
+def get_host_identifier():
+    """Get the serial number for the satlab as a whole"""
+    print(host_connector.HostServicesConnector.get_host_identifier())
+
+
+def update_satlab():
+    """
+        Sets off an update of all docker containers, using watchtower
+
+    Returns: String result message.
+    """
+    client = docker.from_env(timeout=600)
+
+    try:
+        container = client.containers.get("update")
+        if container.status != "running":
+            container.remove(force=True)
+        else:
+            print("Already updating please wait.")
+            return
+    except docker.errors.NotFound:
+        pass
+
+    label = os.environ.get("WATCHTOWER_TAG", "release")
+    container = client.containers.run(
+        DOCKER_REGISTRY + "watchtower:%s" % label,
+        volumes=["/var/run/docker.sock:/var/run/docker.sock"],
+        name="update",
+        detach=True,
+        remove=True,
+        command="--run-once --include-restarting --include-stopped --revive-stopped -d",
+    )
+
+    try:
+        container.wait(timeout=60)
+    except requests.exceptions.ReadTimeout:
+        logging.exception("Watchtower update raised an exception.")
+        container.stop()
+    finally:
+        container.remove()
+    print("Update finished.")
+    return
+
+def update_system():
+    """
+        Initiates system update if it is available.
+    Returns:
+        An error message.
+    """
+    try:
+        response = (
+            host_connector.HostServicesConnector.install_system_update()
+        )
+        return response.error
+    except host_connector.HostServicesException:
+        logging.exception("Install system update raised an exception.")
+        return "Failed to install update."
+
+if __name__ == "__main__":
+    if len(sys.argv) > 1:
+        f = os.path.basename(sys.argv[1])
+        locals()[f]()
diff --git a/src/dockerfiles/satlab_remote_access/motd b/src/dockerfiles/satlab_remote_access/tools/motd
similarity index 100%
rename from src/dockerfiles/satlab_remote_access/motd
rename to src/dockerfiles/satlab_remote_access/tools/motd
diff --git a/src/dockerfiles/satlab_remote_access/tools/update_satlab b/src/dockerfiles/satlab_remote_access/tools/update_satlab
new file mode 100644
index 0000000..f48dfe7
--- /dev/null
+++ b/src/dockerfiles/satlab_remote_access/tools/update_satlab
@@ -0,0 +1,30 @@
+#!/bin/sh
+# Copyright 2022 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# update_satlab updates the satlab containers by running watchtower container once.
+
+set -eu
+
+cat << EOF
+###############################################################################
+IMPORTANT: Please read below information
+###############################################################################
+
+This operation will update and restart Satlab software, any tests currently in
+progress will be impacted.
+
+###############################################################################
+
+EOF
+while true; do
+    read -p "Do you want to continue with the Satlab update(y/n)?" yn
+    case $yn in
+        [Yy]* ) break;;
+        [Nn]* ) echo "Satlab update aborted!"; exit;;
+        * ) echo "Please answer yes or no.";;
+    esac
+done
+
+exec python3 /usr/local/bin/host_command.py "$0"
\ No newline at end of file
diff --git a/src/dockerfiles/satlab_remote_access/tools/update_system b/src/dockerfiles/satlab_remote_access/tools/update_system
new file mode 100644
index 0000000..ae4162f
--- /dev/null
+++ b/src/dockerfiles/satlab_remote_access/tools/update_system
@@ -0,0 +1,30 @@
+#!/bin/sh
+# Copyright 2022 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# update_system updates the ChromeOS image on the Satlab DHB.
+
+set -eu
+
+cat << EOF
+###############################################################################
+IMPORTANT: Please read below information
+###############################################################################
+
+This operation will update and reboot your Satlab Chromebox, any tests currently in
+progress will be impacted.
+
+###############################################################################
+
+EOF
+while true; do
+    read -p "Do you want to continue with the System update(y/n)?" yn
+    case $yn in
+        [Yy]* ) break;;
+        [Nn]* ) echo "System update aborted!"; exit;;
+        * ) echo "Please answer yes or no.";;
+    esac
+done
+
+exec python3 /usr/local/bin/host_command.py "$0"
\ No newline at end of file
