Skip to content

Added a CLI-specific start-up script. #211

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Added additional tests, path validation, etc. Improved documentation …
…in script comments.
  • Loading branch information
Juan Chong committed May 31, 2019
commit 8e38a2328eee7b73ad0af8b2af2a62e2e09f64bc
52 changes: 49 additions & 3 deletions dw-start-cli.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,31 @@
# Run this from crontab periodically to check whether direwolf is running
# and force it to start up automatically.

# In order to execute this script periodically using crontab, do the following:
# 1.- Configure the script to your liking and save changes.
# 2.- Type "crontab -e" without quotes in the terminal
# 2a.- If this is your first time editing crontab, select your preferred text editor. My favorite is nano.
# 3.- Add the line below to the crontab file. This will force the script to run every minute.
#
# * * * * * /absolute/path/to/this/file/dw-start-cli.sh >/dev/null 2>&1
#
# 4.- Save and close the crontab file.
# 5.- Optional: Use top to check whether direwolf was started. I highly recommend
# testing this script by manually executing it before adding it to the crontab.
# Execute the script manually by typing: ./dw-start-cli.sh

# Versioning (this file, not direwolf version)
#-----------
# v1.4 - KE5WSG - removed support for the GUI and vastly simplified the script
# v1.4 - KE5WSG - Removed support for the GUI and vastly simplified the script.
# Improved error checking and logging.
# v1.3 - KI6ZHD - added variable support for direwolf binary location
# v1.2 - KI6ZHD - support different versions of VNC
# v1.1 - KI6ZHD - expanded version to support running on text-only displays with
# auto support; log placement change
# v1.0 - WB2OSZ - original version for Xwindow displays only

# Enable (true) / disable (false) logging everything to the log file.
# Setting this to 'false' is recommended to keep from unnecessarily filling the log file.
DEBUG=false

#Where will be stored. The directory must be writable by non-root users.
Expand All @@ -33,14 +48,18 @@ DWPATH="/home/pi/direwolf"

DWCONFIG="/home/pi/direwolf"

# Name of the direwolf configuration file.

DWCONFIGFILE="direwolf.conf"

# Direwolf start up command. Examples for both a simple and SDR config are provided.
#
# 1. For normal operation as TNC, digipeater, IGate, etc.
# Print audio statistics each 100 seconds for troubleshooting.
# Change this command to however you wish to start Direwolf.
# Be sure to use variables as necessary when building your command.

DWCMD="$DWPATH/direwolf -a 100 -c $DWCONFIG/direwolf.conf"
DWCMD="$DWPATH/direwolf -a 100 -c $DWCONFIG/$DWCONFIGFILE"

#---------------------------------------------------------------
#
Expand All @@ -56,6 +75,33 @@ export PATH=/usr/local/bin:$PATH

# Error checking before attempting to start direwolf

# Check to see whether the direwolf directory exists
if ! [ -d "$DWPATH" ]; then
echo -e "ERROR: The direwolf path (DWPATH) is invalid! Aborting."
echo "-----------------------" >> $LOGFILE
date >> $LOGFILE
echo "ERROR: The direwolf path (DWPATH) is invalid! Aborting." >> $LOGFILE
exit 1
fi

# Check to see whether the direwolf application exists
if ! [ -f "$DWPATH/direwolf" ]; then
echo -e "ERROR: The direwolf application (DWPATH/direwolf) cannot be found! Aborting."
echo "-----------------------" >> $LOGFILE
date >> $LOGFILE
echo "ERROR: The direwolf application (DWPATH/direwolf) cannot be found! Aborting." >> $LOGFILE
exit 1
fi

# Check to see whether the direwolf configuration file exists
if ! [ -f "$DWCONFIG/$DWCONFIGFILE" ]; then
echo -e "ERROR: The direwolf configuration file specified cannot be found! Aborting."
echo "-----------------------" >> $LOGFILE
date >> $LOGFILE
echo "ERROR: The direwolf configuration file specified cannot be found! Aborting." >> $LOGFILE
exit 1
fi

# Check to see whether screen is installed
if ! type "screen" > /dev/null; then
echo -e "ERROR: screen is not installed. Please install using 'sudo apt-get install screen' Aborting."
Expand All @@ -76,7 +122,7 @@ if screen -list | grep -q "direwolf"; then
exit
fi

# It looks like we have everything we need to start direwolf, let's try!
# It looks like none of the errors forced the application to exit. Let's try running direwolf!

# Wait a little while in case we just rebooted and you're using an old RPi.
# Feel free to adjust this delay as needed.
Expand Down