diff --git a/.gitignore b/.gitignore
index 01c9c58..48c25dd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@
 venv_cbrs
 output
 *.p12
+*.json
diff --git a/.pylintrc b/.pylintrc
new file mode 100644
index 0000000..99b0587
--- /dev/null
+++ b/.pylintrc
@@ -0,0 +1,614 @@
+# SPDX-FileCopyrightText: © 2022 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+[MASTER]
+
+# A comma-separated list of package or module names from where C extensions may
+# be loaded. Extensions are loading into the active Python interpreter and may
+# run arbitrary code.
+extension-pkg-allow-list=lxml.etree
+
+# A comma-separated list of package or module names from where C extensions may
+# be loaded. Extensions are loading into the active Python interpreter and may
+# run arbitrary code. (This is an alternative name to extension-pkg-allow-list
+# for backward compatibility.)
+extension-pkg-whitelist=
+
+# Specify a score threshold to be exceeded before program exits with error.
+fail-under=10.0
+
+# Files or directories to be skipped. They should be base names, not paths.
+ignore=CVS
+
+# Files or directories matching the regex patterns are skipped. The regex
+# matches against base names, not paths.
+ignore-patterns=
+
+# Python code to execute, usually for sys.path manipulation such as
+# pygtk.require().
+#init-hook=
+
+# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the
+# number of processors available to use.
+jobs=1
+
+# Control the amount of potential inferred values when inferring a single
+# object. This can help the performance when dealing with large functions or
+# complex, nested conditions.
+limit-inference-results=100
+
+# List of plugins (as comma separated values of python module names) to load,
+# usually to register additional checkers.
+load-plugins=
+
+# Pickle collected data for later comparisons.
+persistent=yes
+
+# When enabled, pylint would attempt to guess common misconfiguration and emit
+# user-friendly hints instead of false-positive error messages.
+suggestion-mode=yes
+
+# Allow loading of arbitrary C extensions. Extensions are imported into the
+# active Python interpreter and may run arbitrary code.
+unsafe-load-any-extension=no
+
+
+[MESSAGES CONTROL]
+
+# Only show warnings with the listed confidence levels. Leave empty to show
+# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED.
+confidence=
+
+# Disable the message, report, category or checker with the given id(s). You
+# can either give multiple identifiers separated by comma (,) or put this
+# option multiple times (only on the command line, not in the configuration
+# file where it should appear only once). You can also use "--disable=all" to
+# disable everything first and then reenable specific checks. For example, if
+# you want to run only the similarities checker, you can use "--disable=all
+# --enable=similarities". If you want to run only the classes checker, but have
+# no Warning level messages displayed, use "--disable=all --enable=classes
+# --disable=W".
+disable=print-statement,
+        parameter-unpacking,
+        unpacking-in-except,
+        old-raise-syntax,
+        backtick,
+        long-suffix,
+        old-ne-operator,
+        old-octal-literal,
+        import-star-module-level,
+        non-ascii-bytes-literal,
+        raw-checker-failed,
+        bad-inline-option,
+        locally-disabled,
+        file-ignored,
+        suppressed-message,
+        useless-suppression,
+        deprecated-pragma,
+        use-symbolic-message-instead,
+        apply-builtin,
+        basestring-builtin,
+        buffer-builtin,
+        cmp-builtin,
+        coerce-builtin,
+        execfile-builtin,
+        file-builtin,
+        long-builtin,
+        raw_input-builtin,
+        reduce-builtin,
+        standarderror-builtin,
+        unicode-builtin,
+        xrange-builtin,
+        coerce-method,
+        delslice-method,
+        getslice-method,
+        setslice-method,
+        no-absolute-import,
+        old-division,
+        dict-iter-method,
+        dict-view-method,
+        next-method-called,
+        metaclass-assignment,
+        indexing-exception,
+        raising-string,
+        reload-builtin,
+        oct-method,
+        hex-method,
+        nonzero-method,
+        cmp-method,
+        input-builtin,
+        round-builtin,
+        intern-builtin,
+        unichr-builtin,
+        map-builtin-not-iterating,
+        zip-builtin-not-iterating,
+        range-builtin-not-iterating,
+        filter-builtin-not-iterating,
+        using-cmp-argument,
+        eq-without-hash,
+        div-method,
+        idiv-method,
+        rdiv-method,
+        exception-message-attribute,
+        invalid-str-codec,
+        sys-max-int,
+        bad-python3-import,
+        deprecated-string-function,
+        deprecated-str-translate-call,
+        deprecated-itertools-function,
+        deprecated-types-field,
+        next-method-defined,
+        dict-items-not-iterating,
+        dict-keys-not-iterating,
+        dict-values-not-iterating,
+        deprecated-operator-function,
+        deprecated-urllib-function,
+        xreadlines-attribute,
+        deprecated-sys-function,
+        exception-escape,
+        comprehension-escape,
+        c-extension-no-member,
+        invalid-name,
+        duplicate-code
+
+
+# Enable the message, report, category or checker with the given id(s). You can
+# either give multiple identifier separated by comma (,) or put this option
+# multiple time (only on the command line, not in the configuration file where
+# it should appear only once). See also the "--disable" option for examples.
+enable=c-extension-no-member
+
+
+[REPORTS]
+
+# Python expression which should return a score less than or equal to 10. You
+# have access to the variables 'error', 'warning', 'refactor', and 'convention'
+# which contain the number of messages in each category, as well as 'statement'
+# which is the total number of statements analyzed. This score is used by the
+# global evaluation report (RP0004).
+evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
+
+# Template used to display messages. This is a python new-style format string
+# used to format the message information. See doc for all details.
+#msg-template=
+
+# Set the output format. Available formats are text, parseable, colorized, json
+# and msvs (visual studio). You can also give a reporter class, e.g.
+# mypackage.mymodule.MyReporterClass.
+output-format=text
+
+# Tells whether to display a full report or only the messages.
+reports=no
+
+# Activate the evaluation score.
+score=yes
+
+
+[REFACTORING]
+
+# Maximum number of nested blocks for function / method body
+max-nested-blocks=5
+
+# Complete name of functions that never returns. When checking for
+# inconsistent-return-statements if a never returning function is called then
+# it will be considered as an explicit return statement and no message will be
+# printed.
+never-returning-functions=sys.exit
+
+
+[LOGGING]
+
+# The type of string formatting that logging methods do. `old` means using %
+# formatting, `new` is for `{}` formatting.
+logging-format-style=old
+
+# Logging modules to check that the string format arguments are in logging
+# function parameter format.
+logging-modules=logging
+
+
+[SPELLING]
+
+# Limits count of emitted suggestions for spelling mistakes.
+max-spelling-suggestions=4
+
+# Spelling dictionary name. Available dictionaries: none. To make it work,
+# install the 'python-enchant' package.
+spelling-dict=
+
+# List of comma separated words that should not be checked.
+spelling-ignore-words=
+
+# A path to a file that contains the private dictionary; one word per line.
+spelling-private-dict-file=
+
+# Tells whether to store unknown words to the private dictionary (see the
+# --spelling-private-dict-file option) instead of raising a message.
+spelling-store-unknown-words=no
+
+
+[MISCELLANEOUS]
+
+# List of note tags to take in consideration, separated by a comma.
+notes=FIXME,
+      XXX,
+      TODO
+
+# Regular expression of note tags to take in consideration.
+#notes-rgx=
+
+
+[TYPECHECK]
+
+# List of decorators that produce context managers, such as
+# contextlib.contextmanager. Add to this list to register other decorators that
+# produce valid context managers.
+contextmanager-decorators=contextlib.contextmanager
+
+# List of members which are set dynamically and missed by pylint inference
+# system, and so shouldn't trigger E1101 when accessed. Python regular
+# expressions are accepted.
+generated-members=
+
+# Tells whether missing members accessed in mixin class should be ignored. A
+# mixin class is detected if its name ends with "mixin" (case insensitive).
+ignore-mixin-members=yes
+
+# Tells whether to warn about missing members when the owner of the attribute
+# is inferred to be None.
+ignore-none=yes
+
+# This flag controls whether pylint should warn about no-member and similar
+# checks whenever an opaque object is returned when inferring. The inference
+# can return multiple potential results while evaluating a Python object, but
+# some branches might not be evaluated, which results in partial inference. In
+# that case, it might be useful to still emit no-member and other checks for
+# the rest of the inferred objects.
+ignore-on-opaque-inference=yes
+
+# List of class names for which member attributes should not be checked (useful
+# for classes with dynamically set attributes). This supports the use of
+# qualified names.
+ignored-classes=optparse.Values,thread._local,_thread._local
+
+# List of module names for which member attributes should not be checked
+# (useful for modules/projects where namespaces are manipulated during runtime
+# and thus existing member attributes cannot be deduced by static analysis). It
+# supports qualified module names, as well as Unix pattern matching.
+ignored-modules=
+
+# Show a hint with possible names when a member name was not found. The aspect
+# of finding the hint is based on edit distance.
+missing-member-hint=yes
+
+# The minimum edit distance a name should have in order to be considered a
+# similar match for a missing member name.
+missing-member-hint-distance=1
+
+# The total number of similar names that should be taken in consideration when
+# showing a hint for a missing member.
+missing-member-max-choices=1
+
+# List of decorators that change the signature of a decorated function.
+signature-mutators=
+
+
+[VARIABLES]
+
+# List of additional names supposed to be defined in builtins. Remember that
+# you should avoid defining new builtins when possible.
+additional-builtins=
+
+# Tells whether unused global variables should be treated as a violation.
+allow-global-unused-variables=yes
+
+# List of names allowed to shadow builtins
+allowed-redefined-builtins=
+
+# List of strings which can identify a callback function by name. A callback
+# name must start or end with one of those strings.
+callbacks=cb_,
+          _cb
+
+# A regular expression matching the name of dummy variables (i.e. expected to
+# not be used).
+dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_
+
+# Argument names that match this expression will be ignored. Default to name
+# with leading underscore.
+ignored-argument-names=_.*|^ignored_|^unused_
+
+# Tells whether we should check for unused import in __init__ files.
+init-import=no
+
+# List of qualified module names which can have objects that can redefine
+# builtins.
+redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io
+
+
+[FORMAT]
+
+# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
+expected-line-ending-format=
+
+# Regexp for a line that is allowed to be longer than the limit.
+ignore-long-lines=^\s*(# )?<?https?://\S+>?$
+
+# Number of spaces of indent required inside a hanging or continued line.
+indent-after-paren=4
+
+# String used as indentation unit. This is usually "    " (4 spaces) or "\t" (1
+# tab).
+indent-string='    '
+
+# Maximum number of characters on a single line.
+max-line-length=100
+
+# Maximum number of lines in a module.
+max-module-lines=1000
+
+# Allow the body of a class to be on the same line as the declaration if body
+# contains single statement.
+single-line-class-stmt=no
+
+# Allow the body of an if to be on the same line as the test if there is no
+# else.
+single-line-if-stmt=no
+
+
+[SIMILARITIES]
+
+# Ignore comments when computing similarities.
+ignore-comments=yes
+
+# Ignore docstrings when computing similarities.
+ignore-docstrings=yes
+
+# Ignore imports when computing similarities.
+ignore-imports=no
+
+# Minimum lines number of a similarity.
+min-similarity-lines=4
+
+
+[BASIC]
+
+# Naming style matching correct argument names.
+argument-naming-style=snake_case
+
+# Regular expression matching correct argument names. Overrides argument-
+# naming-style.
+#argument-rgx=
+
+# Naming style matching correct attribute names.
+attr-naming-style=snake_case
+
+# Regular expression matching correct attribute names. Overrides attr-naming-
+# style.
+#attr-rgx=
+
+# Bad variable names which should always be refused, separated by a comma.
+bad-names=foo,
+          bar,
+          baz,
+          toto,
+          tutu,
+          tata
+
+# Bad variable names regexes, separated by a comma. If names match any regex,
+# they will always be refused
+bad-names-rgxs=
+
+# Naming style matching correct class attribute names.
+class-attribute-naming-style=any
+
+# Regular expression matching correct class attribute names. Overrides class-
+# attribute-naming-style.
+#class-attribute-rgx=
+
+# Naming style matching correct class constant names.
+class-const-naming-style=UPPER_CASE
+
+# Regular expression matching correct class constant names. Overrides class-
+# const-naming-style.
+#class-const-rgx=
+
+# Naming style matching correct class names.
+class-naming-style=PascalCase
+
+# Regular expression matching correct class names. Overrides class-naming-
+# style.
+#class-rgx=
+
+# Naming style matching correct constant names.
+const-naming-style=UPPER_CASE
+
+# Regular expression matching correct constant names. Overrides const-naming-
+# style.
+#const-rgx=
+
+# Minimum line length for functions/classes that require docstrings, shorter
+# ones are exempt.
+docstring-min-length=-1
+
+# Naming style matching correct function names.
+function-naming-style=snake_case
+
+# Regular expression matching correct function names. Overrides function-
+# naming-style.
+#function-rgx=
+
+# Good variable names which should always be accepted, separated by a comma.
+good-names=i,
+           j,
+           k,
+           ex,
+           Run,
+           _
+
+# Good variable names regexes, separated by a comma. If names match any regex,
+# they will always be accepted
+good-names-rgxs=
+
+# Include a hint for the correct naming format with invalid-name.
+include-naming-hint=no
+
+# Naming style matching correct inline iteration names.
+inlinevar-naming-style=any
+
+# Regular expression matching correct inline iteration names. Overrides
+# inlinevar-naming-style.
+#inlinevar-rgx=
+
+# Naming style matching correct method names.
+method-naming-style=snake_case
+
+# Regular expression matching correct method names. Overrides method-naming-
+# style.
+#method-rgx=
+
+# Naming style matching correct module names.
+module-naming-style=snake_case
+
+# Regular expression matching correct module names. Overrides module-naming-
+# style.
+#module-rgx=
+
+# Colon-delimited sets of names that determine each other's naming style when
+# the name regexes allow several styles.
+name-group=
+
+# Regular expression which should only match function or class names that do
+# not require a docstring.
+no-docstring-rgx=^_
+
+# List of decorators that produce properties, such as abc.abstractproperty. Add
+# to this list to register other decorators that produce valid properties.
+# These decorators are taken in consideration only for invalid-name.
+property-classes=abc.abstractproperty
+
+# Naming style matching correct variable names.
+variable-naming-style=snake_case
+
+# Regular expression matching correct variable names. Overrides variable-
+# naming-style.
+#variable-rgx=
+
+
+[STRING]
+
+# This flag controls whether inconsistent-quotes generates a warning when the
+# character used as a quote delimiter is used inconsistently within a module.
+check-quote-consistency=no
+
+# This flag controls whether the implicit-str-concat should generate a warning
+# on implicit string concatenation in sequences defined over several lines.
+check-str-concat-over-line-jumps=no
+
+
+[IMPORTS]
+
+# List of modules that can be imported at any level, not just the top level
+# one.
+allow-any-import-level=
+
+# Allow wildcard imports from modules that define __all__.
+allow-wildcard-with-all=no
+
+# Analyse import fallback blocks. This can be used to support both Python 2 and
+# 3 compatible code, which means that the block might have code that exists
+# only in one or another interpreter, leading to false positives when analysed.
+analyse-fallback-blocks=no
+
+# Deprecated modules which should not be used, separated by a comma.
+deprecated-modules=optparse,tkinter.tix
+
+# Output a graph (.gv or any supported image format) of external dependencies
+# to the given file (report RP0402 must not be disabled).
+ext-import-graph=
+
+# Output a graph (.gv or any supported image format) of all (i.e. internal and
+# external) dependencies to the given file (report RP0402 must not be
+# disabled).
+import-graph=
+
+# Output a graph (.gv or any supported image format) of internal dependencies
+# to the given file (report RP0402 must not be disabled).
+int-import-graph=
+
+# Force import order to recognize a module as part of the standard
+# compatibility libraries.
+known-standard-library=
+
+# Force import order to recognize a module as part of a third party library.
+known-third-party=enchant
+
+# Couples of modules and preferred modules, separated by a comma.
+preferred-modules=
+
+
+[CLASSES]
+
+# Warn about protected attribute access inside special methods
+check-protected-access-in-special-methods=no
+
+# List of method names used to declare (i.e. assign) instance attributes.
+defining-attr-methods=__init__,
+                      __new__,
+                      setUp,
+                      __post_init__
+
+# List of member names, which should be excluded from the protected access
+# warning.
+exclude-protected=_asdict,
+                  _fields,
+                  _replace,
+                  _source,
+                  _make
+
+# List of valid names for the first argument in a class method.
+valid-classmethod-first-arg=cls
+
+# List of valid names for the first argument in a metaclass class method.
+valid-metaclass-classmethod-first-arg=cls
+
+
+[DESIGN]
+
+# Maximum number of arguments for function / method.
+max-args=5
+
+# Maximum number of attributes for a class (see R0902).
+max-attributes=7
+
+# Maximum number of boolean expressions in an if statement (see R0916).
+max-bool-expr=5
+
+# Maximum number of branch for function / method body.
+max-branches=12
+
+# Maximum number of locals for function / method body.
+max-locals=15
+
+# Maximum number of parents for a class (see R0901).
+max-parents=7
+
+# Maximum number of public methods for a class (see R0904).
+max-public-methods=20
+
+# Maximum number of return / yield for function / method body.
+max-returns=6
+
+# Maximum number of statements in function / method body.
+max-statements=50
+
+# Minimum number of public methods for a class (see R0903).
+min-public-methods=2
+
+
+[EXCEPTIONS]
+
+# Exceptions that will emit a warning when being caught. Defaults to
+# "BaseException, Exception".
+overgeneral-exceptions=BaseException,
+                       Exception
diff --git a/.reuse/dep5 b/.reuse/dep5
index 72b0c50..322bf21 100644
--- a/.reuse/dep5
+++ b/.reuse/dep5
@@ -1,5 +1,5 @@
 Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 
-Files: VERSION .gitreview README.md example.json
+Files: VERSION .gitreview README.md *.json
 Copyright: 2021 Open Networking Foundation
 License: Apache-2.0
diff --git a/Makefile b/Makefile
index 3241d3d..381a544 100644
--- a/Makefile
+++ b/Makefile
@@ -9,6 +9,9 @@
 .PHONY: test lint pylint black blacken license help
 
 PYTHON_FILES      ?= $(wildcard *.py)
+SHELL_FILES       ?= $(wildcard *.sh)
+CPI_KEY           ?= $(wildcard *.p12)
+
 
 # tooling
 VIRTUALENV        ?= python3 -m venv
@@ -23,13 +26,18 @@
   python -m pip install -r requirements.txt
 	echo "To enter virtualenv, run 'source $@/bin/activate'"
 
-test: black pylint license ## run tests
+test: shellcheck black pylint license ## run tests
 
 pylint: $(VENV_NAME) ## pylint check for best practices
 	source ./$</bin/activate ; set -u ;\
   pylint --version ;\
   pylint $(PYTHON_FILES)
 
+shellcheck:  ## shellcheck shell scripts
+  # SC1091 is excluded which is soucing the venv
+	shellcheck -V
+	shellcheck -e SC1091 $(SHELL_FILES)
+
 black: $(VENV_NAME) ## run black on python files in check mode
 	source ./$</bin/activate ; set -u ;\
   black --version ;\
diff --git a/cbrs_backup.py b/cbrs_backup.py
index 70359f1..fabb6b8 100644
--- a/cbrs_backup.py
+++ b/cbrs_backup.py
@@ -17,18 +17,18 @@
 parser = argparse.ArgumentParser()
 parser.add_argument("address", help="eNB IP address", type=str)
 parser.add_argument(
-    "-u", "--username", help="eNB UI login username", type=bytes, default=b"sc_femto"
+    "-u", "--username", help="eNB UI login username", type=str, default="sc_femto"
 )
 parser.add_argument(
-    "-p", "--password", help="eNB UI login password", type=bytes, default=b"scHt3pp"
+    "-p", "--password", help="eNB UI login password", type=str, default="scHt3pp"
 )
 args = parser.parse_args()
 
 ENB_DOMAIN = f"https://{args.address}/"
 CGI_URL = ENB_DOMAIN + "setup.cgi"
 
-USERNAME = args.username
-PASSWORD = args.password
+USERNAME = bytes(args.username.encode())
+PASSWORD = bytes(args.password.encode())
 
 # Disable SSL verification since we signed the certificate by our own
 session = requests.session()
diff --git a/cbrs_monitor.py b/cbrs_monitor.py
new file mode 100644
index 0000000..72c2b9c
--- /dev/null
+++ b/cbrs_monitor.py
@@ -0,0 +1,126 @@
+#! /usr/bin/python
+
+# SPDX-FileCopyrightText: © 2022 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+"""
+cbrs_configure.py
+
+a tool to configure target eNB devices
+"""
+
+import time
+import argparse
+import base64
+import datetime
+import requests
+from lxml import etree
+
+
+def timestamp():
+    """ replace with logger eventually """
+    return datetime.datetime.now().strftime("[%Y-%m-%d %H:%M:%S]")
+
+
+parser = argparse.ArgumentParser()
+parser.add_argument("address", help="eNB IP address", type=str)
+parser.add_argument(
+    "-u", "--username", help="eNB UI login username", type=str, default="sc_femto"
+)
+parser.add_argument(
+    "-p", "--password", help="eNB UI login password", type=str, default="scHt3pp"
+)
+parser.add_argument(
+    "-d", "--delay", help="delay in seconds beetween checks", type=int, default=60
+)
+parser.add_argument(
+    "-c",
+    "--count",
+    help="number of checks before sending reboot",
+    type=int,
+    default=10,
+)
+
+
+args = parser.parse_args()
+
+ENB_DOMAIN = f"https://{args.address}/"
+CGI_URL = ENB_DOMAIN + "setup.cgi"
+LTESTATE_URL = ENB_DOMAIN + "LTE_status.htm"
+
+USERNAME = bytes(args.username.encode())
+PASSWORD = bytes(args.password.encode())
+
+# Disable SSL verification since we signed the certificate by our own
+session = requests.session()
+session.verify = False
+
+# The login payload passed to cgi gateway
+login_payload = {
+    "un": base64.b64encode(USERNAME).decode(),
+    "pw": base64.b64encode(PASSWORD).decode(),
+    "this_file": "logon.htm",
+    "next_file": "status.htm",
+    "todo": "login",
+}
+
+while True:
+    try:
+        r = session.post(CGI_URL, data=login_payload, timeout=2)
+        e = etree.HTML(r.text)
+        serial_number = e.xpath("//td")[4].text
+    except requests.exceptions.ConnectTimeout:
+        print(f"{timestamp()} Unable to connect {ENB_DOMAIN}, wait 10 seconds.")
+        time.sleep(10)
+        continue
+    except IndexError:
+        print(f"{timestamp()} Invalid XML returned from {CGI_URL}, wait 10 seconds.")
+        time.sleep(10)
+        continue
+
+    cell_down_counter = 0
+
+    while True:
+        r = session.get(LTESTATE_URL)
+        if r.status_code != 200:
+            print(f"{timestamp()} Unable to load {LTESTATE_URL}, retry login.")
+            time.sleep(2)
+            break
+
+        # try to parse XML, and cache any errors
+        cell_state = "BadXML"
+        try:
+            e = etree.HTML(r.text)
+            cell_state = e.xpath("//td")[23].text
+        except IndexError:
+            print(f"{timestamp()} Invalid XML returned from {LTESTATE_URL}")
+
+        print(f"{timestamp()} Current cell state: {cell_state}")
+
+        # check i
+        if cell_state == "Down":
+            cell_down_counter = cell_down_counter + 1
+        else:
+            cell_down_counter = 0
+
+        # eNB is down for too long
+        if cell_down_counter > args.count:
+            cell_down_total = args.count * args.delay
+            print(
+                f" {timestamp()} Cell down reaches {cell_down_total}s, restart eNodeB."
+            )
+            reboot_payload = {
+                "this_file": "status.htm",
+                "next_file": "status.htm",
+                "todo": "reboot",
+            }
+            session.post(CGI_URL, data=reboot_payload)
+
+            # allow time for the eNB to restart itself
+            print(
+                f" {timestamp()} Waiting {cell_down_total} after eNodeB restart for recovery"
+            )
+            time.sleep(cell_down_total)
+            break
+
+        time.sleep(args.delay)
diff --git a/cpisign.py b/cpisign.py
index c7b0ee6..166cab4 100644
--- a/cpisign.py
+++ b/cpisign.py
@@ -29,7 +29,9 @@
 
 if __name__ == "__main__":
     # get password
-    cpi_password = bytes(getpass.getpass(), "ascii")
+    cpi_password = bytes(
+        getpass.getpass(prompt="Password for CPI Key %s: " % args.key), "ascii"
+    )
 
     with open(args.key, "rb") as key_file:
         (pkey, cert, addl_cert) = pkcs12.load_key_and_certificates(
diff --git a/logbackup.sh b/logbackup.sh
new file mode 100755
index 0000000..343e2e3
--- /dev/null
+++ b/logbackup.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+
+# SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+# list of eNB IP addresses, space separated
+enb_ips=( 10.0.0.10 10.0.0.11 )
+
+# credentials for eNB - currently ignored
+enb_user="sc_femto"
+enb_pass="scHt3pp"
+
+# delay in seconds
+delay_s=3600
+
+# create directories if they dont already exist
+for logdir in "${enb_ips[@]}"
+do
+  mkdir -p "$logdir"
+done
+
+# activate virtualenv
+. venv_cbrs/bin/activate
+
+# kill certificate warning
+export PYTHONWARNINGS="ignore:Unverified HTTPS request"
+
+# run logging script in loop forever
+while true
+do
+
+# make backups
+for ip in "${enb_ips[@]}"
+do
+  python cbrs_backup.py -u "$enb_user" -p "$enb_pass" "$ip" | tee -a "${ip}_backup.log"
+done
+
+# delay until next run
+sleep $delay_s
+
+done
