mirror of https://github.com/wb2osz/direwolf.git
				
				
				
			Merge 8e38a2328e into 390d4a8c27
				
					
				
			This commit is contained in:
		
						commit
						f26c5e7c12
					
				| 
						 | 
					@ -0,0 +1,146 @@
 | 
				
			||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Simplified, CLI-only direwolf start-up script
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 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.
 | 
				
			||||||
 | 
					#					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.
 | 
				
			||||||
 | 
					LOGFILE=/var/tmp/dw-start.log
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Location of the direwolf binary.  Depends on $PATH as shown.
 | 
				
			||||||
 | 
					# Change this if you want to use some other specific location.
 | 
				
			||||||
 | 
					# e.g.  DWPATH="/usr/local/bin/direwolf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DWPATH="/home/pi/direwolf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Location of the direwolf configuration file (direwolf.conf).
 | 
				
			||||||
 | 
					# Change this if you want to customize or protect where your configuration
 | 
				
			||||||
 | 
					# file is stored.
 | 
				
			||||||
 | 
					# e.g. DWCONFIG="/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/$DWCONFIGFILE"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#---------------------------------------------------------------
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 2. Alternative for running with SDR receiver.
 | 
				
			||||||
 | 
					#    Piping one application into another makes it a little more complicated.
 | 
				
			||||||
 | 
					#    We need to use bash for the | to be recognized.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#DWCMD="bash -c 'rtl_fm -f 144.39M - | $DWPATH/direwolf -c $DWCONFIG/sdr.conf -r 24000 -D 1 -'"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# When running from cron, we have a very minimal environment
 | 
				
			||||||
 | 
					# including PATH=/usr/bin:/bin.
 | 
				
			||||||
 | 
					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."
 | 
				
			||||||
 | 
						echo "-----------------------" >> $LOGFILE
 | 
				
			||||||
 | 
						date >> $LOGFILE
 | 
				
			||||||
 | 
						echo "ERROR: screen is not installed." >> $LOGFILE
 | 
				
			||||||
 | 
						exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Check to see if there's already a screen session named "direwolf"
 | 
				
			||||||
 | 
					if screen -list | grep -q "direwolf"; then
 | 
				
			||||||
 | 
						echo "A screen session named 'direwolf' is already running.  Direwolf is likely already running.  Exiting."
 | 
				
			||||||
 | 
						if $DEBUG; then
 | 
				
			||||||
 | 
							echo "-----------------------" >> $LOGFILE
 | 
				
			||||||
 | 
							date >> $LOGFILE
 | 
				
			||||||
 | 
							echo "A screen session named 'direwolf' was found. Exiting." >> $LOGFILE
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
						exit
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 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.
 | 
				
			||||||
 | 
					sleep 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Print status messages
 | 
				
			||||||
 | 
					echo "Direwolf starting up..."
 | 
				
			||||||
 | 
					echo "-----------------------" >> $LOGFILE
 | 
				
			||||||
 | 
					date >> $LOGFILE
 | 
				
			||||||
 | 
					echo "Direwolf starting up..." >> $LOGFILE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Start direwolf in a screen session named 'direwolf'
 | 
				
			||||||
 | 
					screen -S direwolf -d -m $DWCMD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Print direwolf screen information to the screen/log
 | 
				
			||||||
 | 
					screen -list direwolf
 | 
				
			||||||
 | 
					screen -list direwolf >> $LOGFILE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "-----------------------"
 | 
				
			||||||
 | 
					echo "-----------------------" >> $LOGFILE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue