General Formatting and Syntax. Fixed a few dangerous rm statments too.

pull/236/head
Hugh 2021-03-16 12:39:25 -04:00
rodzic 4b84194c77
commit 5c21b2bbaa
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 47398A08D38CF50B
10 zmienionych plików z 2372 dodań i 2533 usunięć

Wyświetl plik

@ -1,9 +1,9 @@
#!/bin/bash
MYPATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
LOGO=$MYPATH/logo.png
LOGO=${MYPATH}/logo.png
cat <<EOF > $MYPATH/boot.txt
cat <<EOF >${MYPATH}/boot.txt
Build-a-Pi Build Complete.
If you found this script helpful
@ -17,18 +17,19 @@ https://paypal.me/km4ack
EOF
OUT=$(yad --width=550 --height=300 --text-align=center --center --title="Build-a-Pi" --show-uri \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--text-info<$MYPATH/boot.txt \
--button="CLOSE":2 > /dev/null 2>&1)
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text-info \
--button="CLOSE":2 <${MYPATH}/boot.txt \
>/dev/null 2>&1)
BUT=$?
if [ $BUT = 252 ]; then
rm $MYPATH/boot.txt
crontab -l > $HOME/Documents/cron.tmp
sed -i 's/@reboot\ sleep\ 10.*//' $HOME/Documents/cron.tmp
crontab $HOME/Documents/cron.tmp
rm ${MYPATH}/boot.txt
crontab -l >${HOME}/Documents/cron.tmp
sed -i 's/@reboot\ sleep\ 10.*//' ${HOME}/Documents/cron.tmp
crontab ${HOME}/Documents/cron.tmp
exit
fi
rm $MYPATH/boot.txt
crontab -l > $HOME/Documents/cron.tmp
sed -i 's/@reboot\ sleep\ 10.*//' $HOME/Documents/cron.tmp
crontab $HOME/Documents/cron.tmp
rm ${MYPATH}/boot.txt
crontab -l >${HOME}/Documents/cron.tmp
sed -i 's/@reboot\ sleep\ 10.*//' ${HOME}/Documents/cron.tmp
crontab ${HOME}/Documents/cron.tmp

146
.funfacts
Wyświetl plik

@ -3,149 +3,121 @@
#20200515 km4ack
MYPATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
LOGO=$MYPATH/logo.png
LOGO=${MYPATH}/logo.png
yad --width=400 --height=200 --title="KM4ACK Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="KM4ACK Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
There are over 1500 lines of code in Build-a-Pi"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
When he released his first video, he had never written a bash script"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
He studied for a week and then drove 1 1/2 hours to take the technician exam because it was the closest test location that weekend."
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
A year after passing the tech exam, he passed the extra exam"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
He doesn't know CW. dit dit"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
He released his first ham radio video on YouTube in 2018"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
The Emergency Email Server was the first and last thing he programmed in PHP"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
Patrons get to test his very latest software before they go public. Join in on the fun. https://patreon.com/km4ack"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
His Jeep is a trail rated 2007 Wrangler X"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
Yes. He has a Raspberry Pi in the Jeep"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
The Jeep also houses an 857D for HF and a FTM400 for 2M and 440"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
There is also a Yaesu FT65r on the sun visor ready to grab and go"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
The Yaesu 891 was the first HF rig he purchased new"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
He built a copper J-Pole as his first 2M 440 antenna"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
The J-Pole is still in use today"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
He has never had formal computer programming training"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
Yet continues his studies at <b>The School of Hard Knocks</b>"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
He grew up in North Alabama. ROLL TIDE!!"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
He moved to Tennessee after meeting his wife Pj"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
His first radio was a Baofeng that he purchased before he had a license"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
As of June 2020 he owns 9 Raspberry Pi's. All but 1 is in use."
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
One pi runs a PBX server over AREDN serving roughly 40 hams VOIP phone service"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
Another pi runs an APRS digipeater"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
His favorite digital mode is JS8Call"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
He got interested in EMCOMM because he lost cell service after a tornado outbreak in his home town"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
He used Windows from 3.1 to WIN10. He now runs a Mac as his \
work machine and Raspberry Pi's for all things ham radio"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
Two of his favorite ham YouTubers are Ham Radio Crash Course and K8MRD Radio"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
His favorite non ham Youtuber is Wranglerstar"
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image $LOGO --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=$LOGO --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
yad --width=400 --height=200 --title="Fun Facts" --timeout=30 --image ${LOGO} --text-align=center --skip-taskbar --image-on-top \
--wrap --no-buttons --center --window-icon=${LOGO} --undecorated --text="<big><big><big><b>\r\rKM4ACK\rFun Facts</b></big></big></big>\r\r \
Enough about KM4ACK! Go grab a coffee or do something fun while your pi is built"

Wyświetl plik

@ -11,45 +11,43 @@
##################################################################
#20200620
DESK=$(printenv | grep DISPLAY)
MYPATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
LOGO=$MYPATH/logo.png
RB=$HOME/.config/KM4ACK
BASE=$MYPATH/base.txt
ADDITIONAL=$MYPATH/additional.txt
UTILITY=$MYPATH/utility.txt
FLSUITE=$MYPATH/flsuite.txt
CONFIG=$MYPATH/config
FUNCTIONS=$MYPATH/functions
TEMPCRON=$MYPATH/cron.tmp
DIR=$MYPATH/temp
LOGO=${MYPATH}/logo.png
RB=${HOME}/.config/KM4ACK
BASE=${MYPATH}/base.txt
ADDITIONAL=${MYPATH}/additional.txt
UTILITY=${MYPATH}/utility.txt
FLSUITE=${MYPATH}/flsuite.txt
CONFIG=${MYPATH}/config
FUNCTIONS=${MYPATH}/functions
TEMPCRON=${MYPATH}/cron.tmp
DIR=${MYPATH}/temp
WHO=$(whoami)
VERSION=$(grep "version=" $MYPATH/changelog | sed 's/version=//')
VERSION=$(grep "version=" ${MYPATH}/changelog | sed 's/version=//')
FINISH() {
if [ -f "$BASE" ]; then
rm $BASE
if [ -f "${BASE}" ]; then
rm ${BASE}
fi
if [ -f "$ADDITIONAL" ]; then
rm $ADDITIONAL
if [ -f "${ADDITIONAL}" ]; then
rm ${ADDITIONAL}
fi
if [ -f "$FLSUITE" ]; then
rm $FLSUITE
if [ -f "${FLSUITE}" ]; then
rm ${FLSUITE}
fi
if [ -f "$UTILITY" ]; then
rm $UTILITY
if [ -f "${UTILITY}" ]; then
rm ${UTILITY}
fi
}
trap FINISH EXIT
#check for display. can't run from SSH
if [ -z "$DESK" ]
then
if [ -z "$DESK" ]; then
cat <<EOF
This script cannot be run from an SSH session.
Please boot into the pi's desktop environment,
@ -59,7 +57,9 @@ exit 0
fi
#install YAD & jq as needed
clear;echo;echo
clear
echo
echo
echo "#######################################"
echo "# Updating repository & installing #"
echo "# a few needed items before we begin #"
@ -78,8 +78,8 @@ sudo apt-get update
#####################################
# Check if run before
#####################################
if [ -f "$RB" ]; then
bash $MYPATH/update &
if [ -f "${RB}" ]; then
bash ${MYPATH}/update &
exit
fi
#####################################
@ -87,7 +87,7 @@ fi
#####################################
if [ "$WHO" != 'pi' ]; then
yad --form --width=500 --text-align=center --center --title="Build-a-Pi" --text-align=center \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="<b>USER NAME IS NOT PI</b>\rThis script is designed to be run as the pi user. Please set the user name to pi \
and try again. You can change the user name after the build is complete but some configuration may not work \
as expected" \
@ -97,7 +97,7 @@ fi
#####################################
# notice to user
#####################################
cat <<EOF > $MYPATH/intro.txt
cat <<EOF >${MYPATH}/intro.txt
This script takes approximately 4 hours to complete
if you choose to install everything. If you find it
helpful please consider a donation to encourage future
@ -107,73 +107,71 @@ https://paypal.me/km4ack
EOF
INTRO=$(yad --width=550 --height=250 --text-align=center --center --title="Build-a-Pi" --show-uri \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--text-info<$MYPATH/intro.txt \
--button="Continue":2 > /dev/null 2>&1)
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text-info \
--button="Continue":2 <${MYPATH}/intro.txt \
>/dev/null 2>&1)
BUT=$?
if [ $BUT = 252 ]; then
rm $MYPATH/intro.txt
if [ ${BUT} = 252 ]; then
rm ${MYPATH}/intro.txt
exit
fi
rm $MYPATH/intro.txt
rm ${MYPATH}/intro.txt
#####################################
# Create autostart dir
#used to autostart conky at boot
#####################################
mkdir -p $HOME/.config/autostart
mkdir -p ${HOME}/.config/autostart
#####################################
# Get User Call
#####################################
CALL() {
INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="<b>version $VERSION</b>" \
--field="Call Sign*" \
--field="<b>* Required</b>":LBL \
--button="Continue":2)
BUT=$?
if [ $BUT = 252 ]; then
if [ ${BUT} = 252 ]; then
exit
fi
}
CALL
CALL=$(echo $INFO | awk -F "|" '{print $1}')
CALL=$(echo ${INFO} | awk -F "|" '{print $1}')
CALL=${CALL^^}
#Verify call not empty
ATTEMPTS=0
while [ -z "$CALL" ];
do
if [ $ATTEMPTS -eq 3 ]
then
while [ -z "$CALL" ]; do
if [ $ATTEMPTS -eq 3 ]; then
yad --form --width=420 --text-align=center --center --title="Build-a-Pi" --text-align=center \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="<b>Empty callsign after 3 attempts. Quiting!</b>" \
--button=gtk-ok
exit
fi
yad --form --width=420 --text-align=center --center --title="Build-a-Pi" --text-align=center \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="<b>Call Can't be Blank</b>" \
--button=gtk-ok
((ATTEMPTS = ATTEMPTS + 1))
CALL
CALL=$(echo $INFO | awk -F "|" '{print $1}')
CALL=$(echo ${INFO} | awk -F "|" '{print $1}')
CALL=${CALL^^}
done
echo "CALL=$CALL" > $CONFIG
echo "CALL=$CALL" >${CONFIG}
#####################################
# Base Apps
#####################################
yad --center --list --checklist --width=600 --height=600 --separator="" \
--image $LOGO --column=Check --column=App --column=Description \
--print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \
--image ${LOGO} --column=Check --column=App --column=Description \
--print-column=2 --window-icon=${LOGO} --image-on-top --text-align=center \
--text="<b>Base Applications</b>" --title="Build-a-Pi" \
false "HOTSPOT" "Hot Spot Generator for Portable Ops" \
false "HSTOOLS" "Tools to Manage Hot Spot" \
@ -186,22 +184,21 @@ false "AX25" "Data Link Layer Protocol" \
false "PULSE" "Pulse Audio Control Interface" \
--button="Exit":1 \
--button="Check All and Continue":3 \
--button="Next":2 > $BASE
--button="Next":2 >${BASE}
BUT=$?
if [ $BUT = 252 ] || [ $BUT = 1 ]; then
if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then
exit
fi
if [ $BUT = 3 ]; then
if [ ${BUT} = 3 ]; then
BASEAPPS=(HOTSPOT HSTOOLS GPS ARDOP ARDOPGUI HAMLIB DIREWOLF AX25 PULSE)
for i in "${BASEAPPS[@]}"
do
echo "$i" >> $BASE
for i in "${BASEAPPS[@]}"; do
echo "$i" >>${BASE}
done
fi
#check if hotspot is chosen for install & get info if needed
HS=$(grep "HOTSPOT" $BASE)
HS=$(grep "HOTSPOT" ${BASE})
if [ -n "$HS" ]; then
HSINFO() {
#unblock wifi
@ -212,10 +209,9 @@ sudo ifconfig wlan0 up
#LIST=$(echo $LIST | sed 's/ /|/g')
LIST=$(sudo iw dev "wlan0" scan ap-force | sed -ne 's/^.*SSID: \(..*\)/\1/p' | sort | uniq | paste -sd '|')
HSINFO=$(yad --center --form --width=400 --height=400 --separator="|" --item-separator="|" \
--image $LOGO --column=Check --column=App --column=Description \
--window-icon=$LOGO --image-on-top --text-align=center \
--image ${LOGO} --column=Check --column=App --column=Description \
--window-icon=${LOGO} --image-on-top --text-align=center \
--text="<b>HotSpot Information\r\rPlease enter the information\rbelow \
for the Hot Spot\r</b>NOTE: The last field is the password for the hotspot. You will use this password to \
connect to your Pi when it is in hotspot mode <b>This password can only contain letters and numbers</b>" \
@ -227,11 +223,11 @@ connect to your Pi when it is in hotspot mode <b>This password can only contain
--button="Continue":2 \
--button="Refresh Wifi":3)
BUT=$?
if [ $BUT = 3 ];then
if [ ${BUT} = 3 ]; then
HSINFO #Call HSINFO function
fi
if [ $BUT = 252 ] || [ $BUT = 1 ]; then
if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then
exit
fi
#}
@ -244,10 +240,9 @@ HSPASS=$(echo $HSINFO | awk -F "|" '{print $3}')
#Check password length
if [ -n "$HS" ]; then
COUNT=${#HSPASS}
if [ $COUNT -lt 8 ]
then
if [ ${COUNT} -lt 8 ]; then
yad --center --form --width=300 --height=200 --separator="|" \
--image $LOGO --window-icon=$LOGO --image-on-top --text-align=center \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --text-align=center \
--text="<b>Hotspot password has to be 8-63 characters</b>" --title="Build-a-Pi" \
--button=gtk-ok
HSINFO
@ -258,50 +253,49 @@ fi
HSINFO
fi
echo "SHACKSSID=$SHACKSSID" >> $CONFIG
echo "SHACKPASS=\"$SHACKPASS\"" >> $CONFIG
echo "HSPASS=\"$HSPASS\"" >> $CONFIG
echo "SHACKSSID=$SHACKSSID" >>${CONFIG}
echo "SHACKPASS=\"$SHACKPASS\"" >>${CONFIG}
echo "HSPASS=\"$HSPASS\"" >>${CONFIG}
###################################
#CHECK IF GPS IS CHOSEN TO INSTALL#
###################################
GPSINSTALL=$(cat $BASE | grep GPS)
if [ -n "$GPSINSTALL" ]; then
GPSINSTALL=$(cat ${BASE} | grep GPS)
if [ -n "${GPS}INSTALL" ]; then
yad --center --height="300" --width="300" --form --separator="|" --item-separator="|" --title="GPS" \
--image $LOGO --window-icon=$LOGO --image-on-top \
--image ${LOGO} --window-icon=${LOGO} --image-on-top \
--text="\r\r\r\r\r<b><big>Connect your GPS to the pi</big></b>" \
--button="Exit":1 \
--button="Continue":2
BUT=$?
if [ $BUT = 1 ] || [ $BUT = 252 ]; then
if [ ${BUT} = 1 ] || [ ${BUT} = 252 ]; then
exit
fi
USB=$(ls /dev/serial/by-id)
USB=$(echo $USB | sed "s/\s/|/g")
GPS=$(yad --center --height="600" --width="300" --form --separator="|" --item-separator="|" --title="GPS" \
--image $LOGO --window-icon=$LOGO --image-on-top \
--image ${LOGO} --window-icon=${LOGO} --image-on-top \
--text="Choose Your GPS" \
--field="GPS":CB "$USB")
BUT=$?
if [ $BUT = 252 ] || [ $BUT = 1 ]; then
if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then
echo exiting
exit
fi
GPS=$(echo $GPS | awk -F "|" '{print $1}')
GPS=/dev/serial/by-id/$GPS
echo "GPS=$GPS" >> $CONFIG
GPS=$(echo ${GPS} | awk -F "|" '{print $1}')
GPS=/dev/serial/by-id/${GPS}
echo "GPS=${GPS}" >>${CONFIG}
fi
#####################################
# FLSUITE
#####################################
yad --center --list --checklist --width=600 --height=600 --separator="" \
--image $LOGO --column=Check --column=App --column=Description \
--print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \
--image ${LOGO} --column=Check --column=App --column=Description \
--print-column=2 --window-icon=${LOGO} --image-on-top --text-align=center \
--text="<b>FLDIGI Suite</b>" --title="Build-a-Pi" \
false "FLRIG" "Rig Contol GUI" \
false "FLDIGI" "Digital Software" \
@ -311,16 +305,15 @@ false "FLMSG" "Forms Manager" \
false "FLWRAP" "File Encapsulation" \
--button="Exit":1 \
--button="Check All and Continue":3 \
--button="Next":2 > $FLSUITE
--button="Next":2 >${FLSUITE}
BUT=$?
if [ $BUT = 252 ] || [ $BUT = 1 ]; then
if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then
exit
fi
if [ $BUT = 3 ]; then
if [ ${BUT} = 3 ]; then
FLAPPS=(FLRIG FLDIGI FLAMP FLNET FLMSG FLWRAP)
for i in "${FLAPPS[@]}"
do
echo "$i" >> $FLSUITE
for i in "${FLAPPS[@]}"; do
echo "$i" >>${FLSUITE}
done
fi
@ -328,8 +321,8 @@ fi
# Ham Apps
#####################################
yad --center --list --checklist --width=600 --height=600 --separator="" \
--image $LOGO --column=Check --column=App --column=Description \
--print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \
--image ${LOGO} --column=Check --column=App --column=Description \
--print-column=2 --window-icon=${LOGO} --image-on-top --text-align=center \
--text="<b>Ham Applications</b>" --title="Build-a-Pi" \
false "CONKY" "System Information Display" \
false "PI-APRS" "APRS Message Application" \
@ -354,59 +347,58 @@ false "GPREDICT" "Satellite Tracking" \
false "TQSL" "LOTW Software" \
--button="Exit":1 \
--button="Check All and Continue":3 \
--button="Next":2 > $ADDITIONAL
--button="Next":2 >${ADDITIONAL}
BUT=$?
if [ $BUT = 252 ] || [ $BUT = 1 ]; then
if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then
exit
fi
if [ $BUT = 3 ]; then
ADDAPPS=(CONKY PI-APRS CHIRP GARIM PAT PAT-MENU JS8CALL M0IAX WSJTX PYQSO \
CQRLOG EES QSSTV GRIDTRACKER HAMCLOCK PROPAGATION YAAC XASTIR GPREDICT TQSL \
if [ ${BUT} = 3 ]; then
ADDAPPS=(CONKY PI-APRS CHIRP GARIM PAT PAT-MENU JS8CALL M0IAX WSJTX PYQSO
CQRLOG EES QSSTV GRIDTRACKER HAMCLOCK PROPAGATION YAAC XASTIR GPREDICT TQSL
XLOG)
for i in "${ADDAPPS[@]}"
do
echo "$i" >> $ADDITIONAL
for i in "${ADDAPPS[@]}"; do
echo "$i" >>${ADDITIONAL}
done
fi
#check if hamclock is being installed
HCCHECK=$(grep "HAMCLOCK" $ADDITIONAL)
HCCHECK=$(grep "HAMCLOCK" ${ADDITIONAL})
if [ -n "$HCCHECK" ]; then
HC=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="<b>version $VERSION</b>" \
--field="Ham Clock Size":CB "SMALL|LARGE" \
--button="Continue":2)
HC=$(echo $HC | awk -F "|" '{print $1}')
sed -i 's/HAMCLOCK//' $ADDITIONAL
echo $HC >> $ADDITIONAL
sed -i 's/HAMCLOCK//' ${ADDITIONAL}
echo $HC >>${ADDITIONAL}
fi
PATCHECK=$(grep "PAT" $ADDITIONAL)
PATCHECK=$(grep "PAT" ${ADDITIONAL})
if [ -n "$PATCHECK" ]; then
INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="<b>version $VERSION</b>" \
--field="Six Character Grid Square" \
--field="Winlink Password" \
--field="<b>Password is case sensitive</b>":LBL \
--button="Continue":2)
GRID=$(echo $INFO | awk -F "|" '{print $1}')
GRID=$(echo ${INFO} | awk -F "|" '{print $1}')
GRID=${GRID^^}
WL2KPASS=$(echo $INFO | awk -F "|" '{print $2}')
echo "GRID=$GRID" >> $CONFIG
echo "WL2KPASS=\"$WL2KPASS\"" >> $CONFIG
WL2KPASS=$(echo ${INFO} | awk -F "|" '{print $2}')
echo "GRID=$GRID" >>${CONFIG}
echo "WL2KPASS=\"$WL2KPASS\"" >>${CONFIG}
fi
#####################################
# Utilities
#####################################
yad --center --list --checklist --width=600 --height=600 --separator="" \
--image $LOGO --column=Check --column=App --column=Description \
--print-column=2 --window-icon=$LOGO --image-on-top --text-align=center \
--image ${LOGO} --column=Check --column=App --column=Description \
--print-column=2 --window-icon=${LOGO} --image-on-top --text-align=center \
--text="<b>Utilities</b>" --title="Build-a-Pi" \
false "DIPOLE" "Dipole Calculator" \
false "CALLSIGN" "Call sign lookup" \
@ -425,24 +417,23 @@ false "ZYGRIB" "Grib File Viewer" \
false "GPSUPDATE" "Tool to Manage GPS Devices" \
--button="Exit":1 \
--button="Check All and Continue":3 \
--button="Install Selected":2 > $UTILITY
--button="Install Selected":2 >${UTILITY}
BUT=$?
if [ $BUT = 252 ] || [ $BUT = 1 ]; then
if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then
exit
fi
if [ $BUT = 3 ]; then
if [ ${BUT} = 3 ]; then
UTILAPPS=(DIPOLE CALLSIGN TEMPCONVERT GPARTED SHOWLOG PISTATS TELNET PITERM SECURITY YGATE BPQ BATT VNC ZYGRIB GPSUPDATE)
for i in "${UTILAPPS[@]}"
do
echo "$i" >> $UTILITY
for i in "${UTILAPPS[@]}"; do
echo "$i" >>${UTILITY}
done
fi
#backup crontab
crontab -l >$TEMPCRON
echo "@reboot sleep 10 && export DISPLAY=:0 && $MYPATH/.complete" >> $TEMPCRON
$MYPATH/.funfacts &
echo "@reboot sleep 10 && export DISPLAY=:0 && ${MYPATH}/.complete" >>$TEMPCRON
${MYPATH}/.funfacts &
#upgrade the system
sudo apt-get -y upgrade
sudo apt -y full-upgrade
@ -452,10 +443,10 @@ sudo apt -y full-upgrade
sudo cp bap-wallpaper.jpg /usr/share/rpd-wallpaper/
pcmanfm --set-wallpaper /usr/share/rpd-wallpaper/bap-wallpaper.jpg
mkdir -p $DIR 2> /dev/null
mkdir -p ${DIR} 2>/dev/null
#add virtual sound card link for pulse audio
cd $DIR
cd ${DIR} || exit
cat >tempsound <<EOF
pcm.pulse {
type pulse
@ -467,10 +458,9 @@ EOF
sudo chown root:root tempsound
sudo mv tempsound /etc/asound.conf
#mod sound card for Buster May 2020
#so it will always load as card #2
cd $DIR
cd ${DIR} || exit
cat >tempsound <<EOF
#Internal sound
options snd-bcm2835 index=0
@ -485,21 +475,21 @@ sudo mv tempsound /etc/modprobe.d/alsa.conf
sudo apt-get install -y extra-xdg-menus
#setup bin dir and put in path
mkdir -p $HOME/bin
echo "export PATH=$PATH:$HOME/bin" >> $HOME/.bashrc
mkdir -p ${HOME}/bin
echo "export PATH=$PATH:${HOME}/bin" >>${HOME}/.bashrc
#set update script to exec
chmod +x $MYPATH/update $MYPATH/build-a-pi
chmod +x ${MYPATH}/update ${MYPATH}/build-a-pi
#create build-a-pi menu item
cd $MYPATH
cd ${MYPATH} || exit
cat >build-a-pi.desktop <<EOF
[Desktop Entry]
Name=Build-a-Pi
GenericName=KM4ACK Build-a-Pi
Comment=Build-a-Pi App Manager
Exec=$MYPATH/update
Icon=$MYPATH/logo.png
Exec=${MYPATH}/update
Icon=${MYPATH}/logo.png
Terminal=true
Type=Application
Categories=Settings;DesktopSettings;GTK;X-LXDE-Settings;
@ -510,82 +500,73 @@ sudo mv build-a-pi.desktop /usr/share/applications/
#####################################
# Install Base Apps
#####################################
touch $RB
source $FUNCTIONS/base.function
touch ${RB}
source ${FUNCTIONS}/base.function
while read i; do
$i
done < $BASE
done <${BASE}
#####################################
# Install FLSUITE
#####################################
source $FUNCTIONS/flsuite.function
source ${FUNCTIONS}/flsuite.function
#perform memory increase if needed
CHECKFL="$MYPATH/flsuite.txt"
CHECKFL="${MYPATH}/flsuite.txt"
if [ -s "$CHECKFL" ]; then
FLSTART
fi
touch $RB
touch ${RB}
while read i; do
$i
done < $FLSUITE
done <${FLSUITE}
#Perform memory reset if needed
if [ -s "$CHECKFL" ]; then
FLSTOP
fi
#####################################
# Install ADDITIONAL Apps
#####################################
source $FUNCTIONS/additional.function
source ${FUNCTIONS}/additional.function
while read i; do
$i
done < $ADDITIONAL
done <${ADDITIONAL}
#####################################
# Install KM4ACK Utilites
#####################################
source $FUNCTIONS/utility.function
source ${FUNCTIONS}/utility.function
while read i; do
$i
done < $UTILITY
done <${UTILITY}
#####################################
# END CLEANUP
#####################################
#Remove temp files
rm $BASE $ADDITIONAL $UTILITY $FLSUITE > /dev/null 2>&1
rm -rf $DIR > /dev/null 2>&1
rm ${BASE} ${ADDITIONAL} ${UTILITY} ${FLSUITE} >/dev/null 2>&1
rm -rf ${DIR} >/dev/null 2>&1
#sudo apt -y autoremove > /dev/null 2>&1
#restore crontab
crontab $TEMPCRON
rm $TEMPCRON
crontab ${TEMPCRON}
rm ${TEMPCRON}
echo "WE ARE ALL DONE HERE. If you close this window, you will have to reboot manually."
#reboot when done
yad --width=400 --height=200 --title="Reboot" --image $LOGO \
yad --width=400 --height=200 --title="Reboot" --image ${LOGO} \
--text-align=center --skip-taskbar --image-on-top \
--wrap --window-icon=$LOGO \
--wrap --window-icon=${LOGO} \
--undecorated --text="<big><big><big><b>Build Finished \rReboot Required</b></big></big></big>\r\r" \
--button="Reboot Now":0 \
--button="Exit":1
BUT=$(echo $?)
if [ $BUT = 0 ]; then
if [ ${BUT} = 0 ]; then
echo rebooting
sudo reboot
elif [ $BUT = 1 ]; then
elif [ ${BUT} = 1 ]; then
exit
fi

Wyświetl plik

@ -4,14 +4,15 @@
#to help diagnose issues
#20200616 km4ack
#11FEB2021 review km4ack
clear;echo;echo
read -p "What is your call sign? " CALL
DIR=$HOME/Desktop/$CALL-diagnostic-report
clear
echo
echo
read -rp "What is your call sign? " CALL
DIR=${HOME}/Desktop/${CALL}-diagnostic-report
#create temp dir
mkdir -p $DIR
mkdir -p ${DIR}
#check to see which apps are installed
CHECK() {
@ -19,7 +20,7 @@ CHECK(){
# Hotspot
#----------------------------------------------------#
HOTSPOT="/usr/bin/autohotspotN"
if [ ! -f "$HOTSPOT" ]; then
if [ ! -f "${HOTSPOT}" ]; then
HOTSPOT="Not Installed"
else
HOTSPOT="Installed"
@ -52,7 +53,7 @@ fi
#----------------------------------------------------#
# ARDOP
#----------------------------------------------------#
if [ -f $HOME/ardop/piardopc ]; then
if [ -f ${HOME}/ardop/piardopc ]; then
ARDOP="Installed"
else
ARDOP="Not Installed"
@ -60,7 +61,7 @@ fi
#----------------------------------------------------#
# ARDOP GUI
#----------------------------------------------------#
if [ -f $HOME/ardop/piARDOP_GUI ]; then
if [ -f ${HOME}/ardop/piARDOP_GUI ]; then
ARDOPGUI="Installed"
else
ARDOPGUI="Not Installed"
@ -74,12 +75,11 @@ RIG="Not_Installed"
else
echo "Checking Rig Control"
RIG=$(rigctl --version | grep Hamlib | sed s/"rigctl(d),\ Hamlib\ "//)
NEWRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download | \
grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] | \
NEWRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download |
grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] |
head -n 1 | awk -F "/" '{print $7}')
if (( $(echo "$NEWRIG $RIG" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWRIG} ${RIG}" | awk '{print ($1 > $2)}'))); then
RIG=NEEDS-UPDATE
else
RIG="is_latest_version"
@ -94,11 +94,10 @@ if ! hash flrig 2>/dev/null; then
FLRIG="Not_Installed"
else
FLRIG=$(flrig --version | awk 'FNR == 1 {print $2}')
NEWFLRIG=$(curl -s https://sourceforge.net/projects/fldigi/files/flrig/ | \
NEWFLRIG=$(curl -s https://sourceforge.net/projects/fldigi/files/flrig/ |
grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}')
if (( $(echo "$NEWFLRIG $FLRIG" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWFLRIG} ${FLRIG}" | awk '{print ($1 > $2)}'))); then
FLRIG=NEEDS-UPDATE
else
FLRIG="is_latest_version"
@ -113,11 +112,10 @@ if ! hash pat 2>/dev/null; then
PAT="Not_Installed"
else
PAT=$(pat version | awk -F 'v' '{print $2}' | head -c 5)
NEWPAT=$(curl -s https://github.com/la5nta/pat/releases | grep -m 1 "amd64.deb"\
| awk -F '_' '{print $2}')
NEWPAT=$(curl -s https://github.com/la5nta/pat/releases | grep -m 1 "amd64.deb" |
awk -F '_' '{print $2}')
if (( $(echo "$NEWPAT $PAT" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWPAT} ${PAT}" | awk '{print ($1 > $2)}'))); then
PAT=NEEDS-UPDATE
else
PAT="is_latest_version"
@ -135,8 +133,7 @@ DIRE=$(direwolf -S -t 0 | head -1 | sed 's/Dire\ Wolf\ version\ //')
wget -P /tmp/ https://raw.githubusercontent.com/wb2osz/direwolf/master/CHANGES.md >/dev/null 2>&1
NEWDIRE=$(cat /tmp/CHANGES.md | head -5 | tail -1 | awk '{ print $3 }')
if (( $(echo "$NEWDIRE $DIRE" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWDIRE} ${DIRE}" | awk '{print ($1 > $2)}'))); then
DIRE=NEEDS-UPDATE
else
DIRE="is_latest_version"
@ -146,16 +143,15 @@ fi
# Pat Menu
#----------------------------------------------------#
echo "Checking Pat Menu"
if [ ! -d $HOME/patmenu2 ]; then
if [ ! -d ${HOME}/patmenu2 ]; then
PATMENU="Not_Installed"
else
cd $HOME/patmenu2/
wget -O $HOME/patmenu2/latest https://raw.githubusercontent.com/km4ack/patmenu2/master/changelog > /dev/null 2>&1
LATEST=$(cat $HOME/patmenu2/latest | grep '^release' | sed 's/release=//')
CURRENT=$(cat $HOME/patmenu2/changelog | grep '^release' | sed 's/release=//')
rm $HOME/patmenu2/latest > /dev/null 2>&1
if (( $(echo "$LATEST $CURRENT" | awk '{print ($1 > $2)}') ))
then
cd ${HOME}/patmenu2/ || exit
wget -O ${HOME}/patmenu2/latest https://raw.githubusercontent.com/km4ack/patmenu2/master/changelog >/dev/null 2>&1
LATEST=$(cat ${HOME}/patmenu2/latest | grep '^release' | sed 's/release=//')
CURRENT=$(cat ${HOME}/patmenu2/changelog | grep '^release' | sed 's/release=//')
rm ${HOME}/patmenu2/latest >/dev/null 2>&1
if (($(echo "${LATEST} ${CURRENT}" | awk '{print ($1 > $2)}'))); then
PATMENU="NEEDS-UPDATE"
else
PATMENU="is_latest_version"
@ -165,13 +161,12 @@ fi
#----------------------------------------------------#
# Hot Spot Tools
#----------------------------------------------------#
if [ ! -d $HOME/hotspot-tools2 ]; then
if [ ! -d ${HOME}/hotspot-tools2 ]; then
HSTOOLS="Not_Installed"
else
CURRENT=$(cat $HOME/hotspot-tools2/changelog | grep version= | sed 's/version=//')
CURRENT=$(cat ${HOME}/hotspot-tools2/changelog | grep version= | sed 's/version=//')
LATEST=$(curl -s https://raw.githubusercontent.com/km4ack/hotspot-tools2/master/changelog | grep version= | sed 's/version=//')
if (( $(echo "$LATEST $CURRENT" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${LATEST} ${CURRENT}" | awk '{print ($1 > $2)}'))); then
HSTOOLS="NEEDS-UPDATE"
else
HSTOOLS="is_latest_version"
@ -190,7 +185,7 @@ fi
#----------------------------------------------------#
# CONKY
#----------------------------------------------------#
if [ -f $HOME/.conkyrc ]; then
if [ -f ${HOME}/.conkyrc ]; then
CONKY=Installed
else
CONKY="Not Installed"
@ -199,45 +194,46 @@ fi
}
CHECK
#get system info
WHO=$(whoami)
KERNAL=$(uname -r)
echo "User Name is $WHO" > $DIR/systeminfo.txt
echo "" >> $DIR/systeminfo.txt
echo "Kernal version is $KERNAL" >> $DIR/systeminfo.txt
echo "" >> $DIR/systeminfo.txt
cat /etc/os-release >> $DIR/systeminfo.txt
echo;echo;echo "#####uname######" >> $DIR/systeminfo.txt
uname -a >> $DIR/systeminfo.txt
echo "User Name is ${WHO}" >${DIR}/systeminfo.txt
echo "" >>${DIR}/systeminfo.txt
echo "Kernal version is ${KERNAL}" >>${DIR}/systeminfo.txt
echo "" >>${DIR}/systeminfo.txt
cat /etc/os-release >>${DIR}/systeminfo.txt
echo
echo
echo "#####uname######" >>${DIR}/systeminfo.txt
uname -a >>${DIR}/systeminfo.txt
#get direwolf.conf file
cat $HOME/direwolf.conf > $DIR/direwolf.conf
cat ${HOME}/direwolf.conf >${DIR}/direwolf.conf
#get pat config file
cat $HOME/.wl2k/config.json > $DIR/patconfig.txt
cat ${HOME}/.wl2k/config.json >${DIR}/patconfig.txt
#remove winlink password
sed -i 's/"secure_login_password":.*$/PASSWORD-REMOVED-FOR-YOUR-SECURITY/' $DIR/patconfig.txt
sed -i 's/"secure_login_password":.*$/PASSWORD-REMOVED-FOR-YOUR-SECURITY/' ${DIR}/patconfig.txt
#get pat menu config file
cat $HOME/patmenu2/config > $DIR/patmenu.conf
cat ${HOME}/patmenu2/config >${DIR}/patmenu.conf
#Get wpa_supplicant
sudo cat /etc/wpa_supplicant/wpa_supplicant.conf > $DIR/wpa.txt
sed -i 's/psk=.*$/PASSWORD-REMOVED/' $DIR/wpa.txt
sudo cat /etc/wpa_supplicant/wpa_supplicant.conf >${DIR}/wpa.txt
sed -i 's/psk=.*$/PASSWORD-REMOVED/' ${DIR}/wpa.txt
#get sound info
echo "" >> $DIR/sound.info
echo "ARECORD INFO" > $DIR/sound.info
arecord -l >> $DIR/sound.info
echo "" >> $DIR/sound.info
echo "" >> $DIR/sound.info
echo "APLAY INFO" >> $DIR/sound.info
aplay -l >> $DIR/sound.info
echo "" >> $DIR/sound.info
echo "" >> $DIR/sound.info
echo "Using sound card" >> $DIR/sound.info
sudo lsof /dev/snd/* >> $DIR/sound.info
echo "" >>${DIR}/sound.info
echo "ARECORD INFO" >${DIR}/sound.info
arecord -l >>${DIR}/sound.info
echo "" >>${DIR}/sound.info
echo "" >>${DIR}/sound.info
echo "APLAY INFO" >>${DIR}/sound.info
aplay -l >>${DIR}/sound.info
echo "" >>${DIR}/sound.info
echo "" >>${DIR}/sound.info
echo "Using sound card" >>${DIR}/sound.info
sudo lsof /dev/snd/* >>${DIR}/sound.info
#Get hotspot info
HS=$(systemctl is-active autohotspot)
@ -255,59 +251,65 @@ else
FORCE="Hotspot IS in force mode"
fi
if [ $HSS = $CIP ]
then
if [ ${HSS} = ${CIP} ]; then
HSS=ACTIVE
else
HSS=INACTIVE
fi
FILE=$DIR/hotspot.info
FILE=${DIR}/hotspot.info
echo "Hotspot status $HS" > $FILE
echo "Hotspot state $HSS" >> $FILE
echo "Hotspot Name is $CURRENTNAME" >> $FILE
echo "Hotspot IP = $HSIP" >> $FILE
echo "Wireless IP = $CIP" >> $FILE
echo "CAT5 IP = $WIREIP" >> $FILE
echo "$FORCE" >> $FILE
echo "crontab set to auto run ever $AUTORUN minutes" >> $FILE
echo "Hotspot status ${HS}" >${FILE}
echo "Hotspot state ${HSS}" >>${FILE}
echo "Hotspot Name is ${CURRENTNAME}" >>${FILE}
echo "Hotspot IP = ${HSIP}" >>${FILE}
echo "Wireless IP = ${CIP}" >>${FILE}
echo "CAT5 IP = ${WIREIP}" >>${FILE}
echo "${FORCE}" >>${FILE}
echo "crontab set to auto run ever ${AUTORUN} minutes" >>${FILE}
#get cron contents
crontab -l > $DIR/cron.txt
crontab -l >${DIR}/cron.txt
#get gps info
GPSD=$(systemctl is-active gpsd)
CHRONY=$(systemctl is-active chronyd)
echo "/etc/default/gpsd file contents" > $DIR/gps.info
echo;echo >> $DIR/gps.info
cat /etc/default/gpsd >> $DIR/gps.info
echo;echo;echo >> $DIR/gps.info
echo "GPSD is $GPSD" >> $DIR/gps.info
echo "Chrony is $CHRONY" >> $DIR/gps.info
echo;echo;echo "#####TIME SOURCES#####" >> $DIR/gps.info
chronyc sources -v >> $DIR/gps.info
echo "/etc/default/gpsd file contents" >${DIR}/gps.info
echo
echo >>${DIR}/gps.info
cat /etc/default/gpsd >>${DIR}/gps.info
echo
echo
echo >>${DIR}/gps.info
echo "GPSD is $GPSD" >>${DIR}/gps.info
echo "Chrony is $CHRONY" >>${DIR}/gps.info
echo
echo
echo "#####TIME SOURCES#####" >>${DIR}/gps.info
chronyc sources -v >>${DIR}/gps.info
#Check installed apps
echo "Hotspot $HOTSPOT" > $DIR/apps.info
echo "HS Tools $HSTOOLS" >> $DIR/apps.info
echo "AX25 $AX25" >> $DIR/apps.info
echo "GPS $GPS" >> $DIR/apps.info
echo "Pulse $PULSE" >> $DIR/apps.info
echo "ARDOP GUI $ARDOPGUI" >> $DIR/apps.info
echo "CONKY $CONKY" >> $DIR/apps.info
echo "HAMLIB $RIG" >> $DIR/apps.info
echo "FLRIG $FLRIG" >> $DIR/apps.info
echo "PAT $PAT" >> $DIR/apps.info
echo "DIREWOLF $DIRE" >> $DIR/apps.info
echo "Pat Menu $PATMENU" >> $DIR/apps.info
echo "EES $EES" >> $DIR/apps.info
echo "Hotspot $HOTSPOT" >${DIR}/apps.info
echo "HS Tools $HSTOOLS" >>${DIR}/apps.info
echo "AX25 $AX25" >>${DIR}/apps.info
echo "GPS $GPS" >>${DIR}/apps.info
echo "Pulse $PULSE" >>${DIR}/apps.info
echo "ARDOP GUI $ARDOPGUI" >>${DIR}/apps.info
echo "CONKY $CONKY" >>${DIR}/apps.info
echo "HAMLIB $RIG" >>${DIR}/apps.info
echo "FLRIG $FLRIG" >>${DIR}/apps.info
echo "PAT $PAT" >>${DIR}/apps.info
echo "DIREWOLF $DIRE" >>${DIR}/apps.info
echo "Pat Menu $PATMENU" >>${DIR}/apps.info
echo "EES $EES" >>${DIR}/apps.info
cd $HOME/Desktop
zip -r $CALL-diagnostic.zip $DIR > /dev/null 2>&1
cd ${HOME}/Desktop || exit
zip -r ${CALL}-diagnostic.zip ${DIR} >/dev/null 2>&1
rm -rf $DIR > /dev/null 2>&1
clear;echo;echo
rm -rf ${DIR} >/dev/null 2>&1
clear
echo
echo
cat <<EOF
DONE!!
@ -323,13 +325,3 @@ https://groups.io/g/KM4ACK-Pi/topics
73, de KM4ACK
EOF

Wyświetl plik

@ -1,13 +1,12 @@
#additional software to install with build-a-pi
#20200513 km4ack
TEMPCRON=$MYPATH/cron.tmp
DIR=$MYPATH/temp
TEMPCRON=${MYPATH}/cron.tmp
DIR=${MYPATH}/temp
WHO=$(whoami)
mkdir -p $DIR
mkdir -p ${DIR}
source $MYPATH/config
source ${MYPATH}/config
##################################
# PAT WINLINK
@ -17,37 +16,37 @@ echo "##################"
echo "installing pat"
echo "##################"
PORT=8080
cd $DIR
if [ -f $HOME/.wl2k/config.json ]; then
cp $HOME/.wl2k/config.json $DIR/config.json
cd ${DIR}
if [ -f ${HOME}/.wl2k/config.json ]; then
cp ${HOME}/.wl2k/config.json ${DIR}/config.json
fi
NEWPATV=$(curl -s https://github.com/la5nta/pat/releases | grep armhf | head -1 | sed 's/.*pat_/pat_/' | sed 's/<\/a>.*$//')
NEWPAT=$(echo $NEWPATV | sed 's/pat_//' | sed 's/_linux_armhf.deb//' | sed 's/0\.//')
echo "new pat v $NEWPATV"
echo "new pat $NEWPAT"
wget --tries 2 --connect-timeout=60 https://github.com/la5nta/pat/releases/download/v0.$NEWPAT/$NEWPATV
sudo dpkg -i $DIR/$NEWPATV
NEWPAT=$(echo ${NEWPATV} | sed 's/pat_//' | sed 's/_linux_armhf.deb//' | sed 's/0\.//')
echo "new pat v ${NEWPATV}"
echo "new pat ${NEWPAT}"
wget --tries 2 --connect-timeout=60 https://github.com/la5nta/pat/releases/download/v0.${NEWPAT}/${NEWPATV}
sudo dpkg -i ${DIR}/${NEWPATV}
pat http &
sudo killall pat
sudo systemctl start pat@$WHO
sudo systemctl enable pat@$WHO
cd $DIR
FIG=$HOME/.wl2k/config.json
sudo systemctl start pat@${WHO}
sudo systemctl enable pat@${WHO}
cd ${DIR}
FIG=${HOME}/.wl2k/config.json
#set callsign
sed -i "s/\"mycall\": \".*\",/\"mycall\": \"$CALL\",/" $FIG
sed -i "s/\"mycall\": \".*\",/\"mycall\": \"${CALL}\",/" ${FIG}
#set password
WL2KPASS=$(grep "WL2KPASS" $MYPATH/config | sed 's/"//g' | sed 's/WL2KPASS=//')
sed -i "s/\"secure_login_password\": \".*\",/\"secure_login_password\": \""$WL2KPASS"\",/" $FIG
WL2KPASS=$(grep "WL2KPASS" ${MYPATH}/config | sed 's/"//g' | sed 's/WL2KPASS=//')
sed -i "s/\"secure_login_password\": \".*\",/\"secure_login_password\": \""$WL2KPASS"\",/" ${FIG}
#set locator
sed -i "s/\"locator\": \".*\",/\"locator\": \"$GRID\",/" $FIG
sed -i "s/\"locator\": \".*\",/\"locator\": \"$GRID\",/" ${FIG}
#Change localhost to 0.0.0.0
sed -i "s/\"http_addr\": \".*\",/\"http_addr\": \"0.0.0.0:$PORT\",/" $FIG
jq '.ax25.rig = '\"my-rig\"'' $HOME/.wl2k/config.json | jq '.ardop.rig = '\"my-rig\"'' | jq '.hamlib_rigs = {'\"my-rig\"': {"address": "127.0.0.1:4532", "network": "tcp"}}' > ~/Desktop/config.json
mv $HOME/Desktop/config.json $FIG
sed -i 's/"enable_http": false,/"enable_http": true,/' $FIG
sed -i "s/\"http_addr\": \".*\",/\"http_addr\": \"0.0.0.0:$PORT\",/" ${FIG}
jq '.ax25.rig = '\"my-rig\"'' ${HOME}/.wl2k/config.json | jq '.ardop.rig = '\"my-rig\"'' | jq '.hamlib_rigs = {'\"my-rig\"': {"address": "127.0.0.1:4532", "network": "tcp"}}' >~/Desktop/config.json
mv ${HOME}/Desktop/config.json ${FIG}
sed -i 's/"enable_http": false,/"enable_http": true,/' ${FIG}
if [ -f $DIR/config.json ]; then
mv $DIR/config.json $HOME/.wl2k/
if [ -f ${DIR}/config.json ]; then
mv ${DIR}/config.json ${HOME}/.wl2k/
fi
}
@ -56,41 +55,41 @@ fi
##################################
PAT-MENU() {
#backup config files (Issue #119)
if [ -f $HOME/patmenu2/config ]; then
mkdir -p $DIR/patconfig
cp $HOME/patmenu2/*config* $DIR/patconfig/
if [ -f ${HOME}/patmenu2/config ]; then
mkdir -p ${DIR}/patconfig
cp ${HOME}/patmenu2/*config* ${DIR}/patconfig/
fi
#update pat menu
if [ -d $HOME/patmenu2 ]; then
rm -rf $HOME/patmenu2
if [ -d ${HOME}/patmenu2 ]; then
rm -rf "${HOME}/patmenu2"
fi
cd $HOME
git clone https://github.com/km4ack/patmenu2.git $HOME/patmenu2 && bash $HOME/patmenu2/setup
sed -i "s/N0CALL/$CALL/" $HOME/patmenu2/config
sed -i 's/1,0/2,0/g' $HOME/patmenu2/config
cd ${HOME}
git clone https://github.com/km4ack/patmenu2.git ${HOME}/patmenu2 && bash ${HOME}/patmenu2/setup
sed -i "s/N0CALL/${CALL}/" ${HOME}/patmenu2/config
sed -i 's/1,0/2,0/g' ${HOME}/patmenu2/config
#restore config files
if [ -d $DIR/patconfig/ ]; then
mv $DIR/patconfig/* $HOME/patmenu2/
if [ -d ${DIR}/patconfig/ ]; then
mv ${DIR}/patconfig/* ${HOME}/patmenu2/
fi
}
##################################
# JS8Call
##################################
JS8CALL() {
cd $DIR
cd ${DIR}
JS8LATE=$(curl -s http://files.js8call.com/latest.html | grep armhf | awk '{ print $2 }' | sed 's/href=//' | sed 's/"//g')
JS8PKG=$(curl -s http://files.js8call.com/latest.html | grep armhf | awk '{ print $2 }' | sed 's/\///g' | sed 's/href="http:files.js8call.com[0-9].[0-9].[0-9]//' | sed 's/"//')
wget --tries 2 --connect-timeout=60 $JS8LATE || echo "Can't Download JS8Call" >> $BUILDLOG
sudo dpkg -i $JS8PKG
wget --tries 2 --connect-timeout=60 ${JS8LATE} || echo "Can't Download JS8Call" >>${BUILDLOG}
sudo dpkg -i ${JS8PKG}
sudo apt-get --fix-broken -y install
sudo dpkg -i $JS8PKG
sudo dpkg -i ${JS8PKG}
}
##################################
# WSJTX
##################################
WSJTX() {
cd $DIR
cd ${DIR}
WSPKG=$(curl -s https://physics.princeton.edu/pulsar/k1jt/wsjtx.html | grep armhf.deb | sed 's/^.*wsjtx/wsjtx/' | sed 's/deb.*$/deb/' | head -1)
wget --tries 2 --connect-timeout=60 --no-check-certificate https://physics.princeton.edu/pulsar/k1jt/$WSPKG
WSJTXSUCCESS=$?
@ -104,7 +103,7 @@ sudo locale-gen
#try sourcegorge if princeton.edu fails
WSJTX2() {
if [ "$WSJTXSUCCESS" ! = 0 ]; then
cd $DIR
cd ${DIR}
wget --tries 2 --connect-timeout=60 https://sourceforge.net/projects/wsjt/files/wsjtx-2.2.2/wsjtx_2.2.2_armhf.deb
sudo dpkg -i wsjtx_2.2.2_armhf.deb
sudo apt-get --fix-broken -y install
@ -115,8 +114,6 @@ sudo locale-gen
}
##################################
# CONKY
##################################
@ -124,24 +121,24 @@ CONKY(){
if ! hash conky 2>/dev/null; then
sudo apt install -y conky
fi
touch $HOME/Documents/mylog.txt #conky will fail to load if this file doesn't exist
touch ${HOME}/Documents/mylog.txt #conky will fail to load if this file doesn't exist
touch /var/lib/misc/dnsmasq.leases #conky will fail to load if this file doesn't exist
sudo apt-get install -y ruby2.5
sudo gem install gpsd_client
sudo gem install maidenhead
cp $MYPATH/conky/.conkyrc $HOME/.conkyrc
mkdir -p $HOME/bin/conky
cp $MYPATH/conky/* $HOME/bin/conky/
chmod +x $HOME/bin/conky/get-grid $HOME/bin/conky/temp-conv $HOME/bin/conky/get-freq $HOME/bin/conky/grid
sed -i "s/N0CALL/$CALL/" $HOME/.conkyrc
cp ${MYPATH}/conky/.conkyrc ${HOME}/.conkyrc
mkdir -p ${HOME}/bin/conky
cp ${MYPATH}/conky/* ${HOME}/bin/conky/
chmod +x ${HOME}/bin/conky/get-grid ${HOME}/bin/conky/temp-conv ${HOME}/bin/conky/get-freq ${HOME}/bin/conky/grid
sed -i "s/N0CALL/${CALL}/" ${HOME}/.conkyrc
#Line below is for https://github.com/km4ack/pi-build/issues/198
echo "#Update GPS maidenhead for conky" >> $TEMPCRON
echo "*/1 * * * * /home/pi/bin/conky/grid" >> $TEMPCRON
echo "#Update GPS maidenhead for conky" >>${TEMPCRON}
echo "*/1 * * * * /home/pi/bin/conky/grid" >>${TEMPCRON}
#Create files needed for autostart at login
#Fix issue https://github.com/km4ack/pi-build/issues/83
cat <<EOF > $HOME/.local/share/applications/conky.desktop
cat <<EOF >${HOME}/.local/share/applications/conky.desktop
[Desktop Entry]
Name=Conky
Comment=Conky
@ -155,12 +152,12 @@ Categories=HamRadio
Keywords=Radio
EOF
ln -sf $HOME/.local/share/applications/conky.desktop $HOME/.config/autostart/conky.desktop
ln -sf ${HOME}/.local/share/applications/conky.desktop ${HOME}/.config/autostart/conky.desktop
#####Add setconky to main menu
chmod +x $HOME/pi-build/conky/setconky
chmod +x ${HOME}/pi-build/conky/setconky
cat <<EOF > $HOME/.local/share/applications/setconky.desktop
cat <<EOF >${HOME}/.local/share/applications/setconky.desktop
[Desktop Entry]
Name=Conky-Prefs
Comment=Conky-Prefs
@ -180,7 +177,7 @@ EOF
# M0IAX Tools
##################################
M0IAX() {
cd $DIR
cd ${DIR} || exit
wget http://m0iax.com/wp-content/uploads/2020/08/JS8CallUtils_RaspberryPi.zip
unzip JS8CallUtils_RaspberryPi.zip
rm JS8CallUtils_RaspberryPi.zip
@ -252,16 +249,16 @@ sudo mv cqrlog.desktop /usr/share/applications/
# CHIRP
##################################
CHIRP() {
cd $DIR
cd ${DIR} || exit
wget --tries 2 --connect-timeout=60 https://trac.chirp.danplanet.com/chirp_daily/LATEST/
CHIRPBUILD=$(cat index.html | grep .tar.gz | grep chirp-daily- | awk '{ print $6 }' | sed 's/.*"//' | sed 's/>//' | sed 's/[<].*$//')
sudo apt-get -y install python-gtk2 python-serial python-libxml2
mkdir $HOME/chirp
cd $HOME/chirp
mkdir ${HOME}/chirp
cd ${HOME}/chirp || exit
wget --tries 2 --connect-timeout=60 https://trac.chirp.danplanet.com/chirp_daily/LATEST/$CHIRPBUILD
tar -xzf $CHIRPBUILD
CHIRPDIR=$(echo $CHIRPBUILD | sed 's/[.].*$//')
cd $CHIRPDIR
cd $CHIRPDIR || exit
sudo python setup.py install
pip install future
}
@ -271,11 +268,11 @@ pip install future
##################################
GARIM() {
GPKG=$(curl -s https://www.whitemesa.net/garim/src/ | grep tar.gz | tail -1 | sed 's/^.*garim/garim/' | sed 's/tar.gz.*$/tar.gz/')
cd $DIR
cd ${DIR} || exit
wget --tries 2 --connect-timeout=60 https://www.whitemesa.net/garim/src/$GPKG
tar -xzvf $GPKG
DIRR=$(echo $GPKG | sed 's/.tar.gz//')
cd $DIRR
cd ${DIRR} || exit
./configure
make
sudo make install
@ -287,14 +284,14 @@ sudo make install
QSSTV() {
sudo apt-get install -y g++ libfftw3-dev qt5-default libpulse-dev libhamlib-dev libasound2-dev libv4l-dev libopenjp2-7 libopenjp2-7-dev
cd $HOME/Downloads
cd ${HOME}/Downloads || exit
#not working with 9.5.1
#TAR=$(curl -s http://users.telenet.be/on4qz/qsstv/downloads/ | grep tar.gz | sed 's/.*href="//' | sed 's/">.*$//' | tail -1)
#wget --tries 2 --connect-timeout=60 http://users.telenet.be/on4qz/qsstv/downloads/$TAR
#SSTVTAR=$(echo $TAR | sed 's/.tar.gz//;s/.0//')
#tar -xvzf $TAR
#cd $SSTVTAR
#cd $SSTVTAR || exit
#qmake
#make
#sudo make install
@ -302,12 +299,11 @@ cd $HOME/Downloads
#hard code for 9.4.4 as temp wrokaround 02MARCH2021
wget --tries 2 --connect-timeout=60 http://users.telenet.be/on4qz/qsstv/downloads/qsstv_9.4.4.tar.gz
tar -xvzf qsstv_9.4.4.tar.gz
cd qsstv_9.4.4
cd qsstv_9.4.4 || exit
qmake
make
sudo make install
sudo sed -i 's/Education;/Network;HamRadio;/' /usr/local/share/applications/qsstv.desktop
}
@ -315,21 +311,21 @@ sudo sed -i 's/Education;/Network;HamRadio;/' /usr/local/share/applications/qsst
# GRIDTRACKER
##################################
GRIDTRACKER() {
cd $HOME
cd ${HOME} || exit
sudo apt-get install -y libgconf-2-4
GRIDDLL=$(curl -s https://tagloomis.com/downloads/ | grep Arm | head -1 | sed 's/.*href="//' | sed 's/.gz.*$/.gz/')
wget --tries 2 --connect-timeout=60 $GRIDDLL
GRIDTAR=$(echo $GRIDDLL | sed 's/.*\///g')
tar -xzvf $GRIDTAR
rm *.gz
rm ./*.gz
cat >gridtracker.desktop <<EOF
[Desktop Entry]
Name=GridTracker
Comment=GridTracker
GenericName=GridTracker, a WSJT-X Companion
Exec=$HOME/GridTracker/GridTracker --disable-accelerated-2d-canvas --num-raster-threads=2
Icon=$HOME/GridTracker/gridtracker.png
Path=$HOME/GridTracker
Exec=${HOME}/GridTracker/GridTracker --disable-accelerated-2d-canvas --num-raster-threads=2
Icon=${HOME}/GridTracker/gridtracker.png
Path=${HOME}/GridTracker
Type=Application
Encoding=UTF-8
Terminal=false
@ -339,7 +335,6 @@ EOF
sudo mv gridtracker.desktop /usr/share/applications/
}
##################################
# PROPAGATION
##################################
@ -347,51 +342,51 @@ PROPAGATION(){
sudo apt-get install -y gfortran yelp python3-gi python3-gi-cairo rarian-compat gnome-doc-utils pkg-config python3-dateutil python3-mpltoolkits.basemap python3-cairocffi libgtk-3-dev
#install primary program
cd $HOME/Downloads
cd ${HOME}/Downloads || exit
wget --tries 2 --connect-timeout=60 https://www.qsl.net/hz1jw/voacapl/downloads/voacapl-0.7.2.tar.gz
tar -xzf voacapl-0.7.2.tar.gz
cd voacapl-0.7.2
cd voacapl-0.7.2 || exit
./configure
make
sudo make install
#install gui app for propagation reports
cd $HOME/Downloads
cd ${HOME}/Downloads
wget --tries 2 --connect-timeout=60 https://www.qsl.net/hz1jw/pythonprop/downloads/pythonprop-0.28.tar.gz
tar -xzf pythonprop-0.28.tar.gz
cd pythonprop-0.28
./configure
sudo make install
$HOME/Downloads/voacapl-0.7.2/makeitshfbc
${HOME}/Downloads/voacapl-0.7.2/makeitshfbc
}
##################################
# YAAC
##################################
YAAC() {
cd $DIR
cd ${DIR} || exit
#wget --tries 2 --connect-timeout=60 https://sourceforge.net/projects/yetanotheraprsc/files/YAAC.zip/
wget --tries 2 --connect-timeout=60 https://www.ka2ddo.org/ka2ddo/YAAC.zip
sudo apt-get install -y openjdk-8-jre librxtx-java
mkdir -p $HOME/YAAC
cd $HOME/YAAC
mkdir -p ${HOME}/YAAC
cd ${HOME}/YAAC || exit
touch YAAC
echo "#!/bin/bash" >>YAAC
echo "java -jar $HOME/YAAC/YAAC.jar" >> YAAC
echo "java -jar ${HOME}/YAAC/YAAC.jar" >>YAAC
chmod +x YAAC
cat >yaac.desktop <<EOF
[Desktop Entry]
Name=YAAC
GenericName=YAAC
Comment=APRS Client
Exec=$HOME/YAAC/YAAC
Exec=${HOME}/YAAC/YAAC
Terminal=false
Type=Application
Categories=Network;HamRadio;
EOF
sudo mv yaac.desktop /usr/share/applications/
unzip $DIR/YAAC.zip
unzip ${DIR}/YAAC.zip
}
##################################
@ -408,16 +403,16 @@ sudo apt-get -y install build-essential automake git xorg-dev libmotif-dev graph
gv libcurl4-openssl-dev shapelib libshp-dev libpcre3-dev libproj-dev libdb-dev python-dev \
libax25-dev libwebp-dev libwebp-dev libgraphicsmagick1-dev festival festival-dev
cd
cd || exit
git clone https://github.com/Xastir/Xastir.git
cd Xastir
cd Xastir || exit
./bootstrap.sh
mkdir build; cd build
mkdir build
cd build || exit
../configure
make
sudo make install
cd
cd || exit
rm -rf Xastir
cat >xastir.desktop <<EOF
@ -454,59 +449,56 @@ if ! hash ghostwriter 2>/dev/null; then
sudo apt-get install -y ghostwriter
fi
#Install the KM4ACK EES
cd $DIR
cd ${DIR} || exit
git clone https://github.com/km4ack/EES-LITE.git
cd $DIR/EES-LITE
cd ${DIR}/EES-LITE || exit
#git dev branch of code
git checkout dev
sudo cp -r $DIR/EES-LITE/* /var/www/html/
rm -rf $DIR/EES-LITE
cd /var/www/html
sudo cp -r ${DIR}/EES-LITE/* /var/www/html/
rm -rf "${DIR}/EES-LITE"
cd /var/www/html || exit
sudo chmod +x /var/www/html/firstrun
sudo /var/www/html/./firstrun
sudo sed -i "s/N0CALL/$CALL/" /var/www/html/config.php
sudo sed -i "s/N0CALL/${CALL}/" /var/www/html/config.php
sudo sed -i 's/REMINDER\ FOR\ OPERATOR\ TO\ DO\ SOMETHING/ENABLE\ AUTO\ POST\ REPLY\ IN\ CRON/' /var/www/html/config.php
cd $DIR
cd ${DIR} || exit
#Change Pat Winlink port so it won't interfer with the EES
sed -i 's/0.0.0.0:8080/0.0.0.0:5000/' $HOME/.wl2k/config.json
sed -i 's/PORT=8080/PORT=5000/' $HOME/patmenu2/config
sed -i 's/0.0.0.0:8080/0.0.0.0:5000/' ${HOME}/.wl2k/config.json
sed -i 's/PORT=8080/PORT=5000/' ${HOME}/patmenu2/config
sudo killall pat
sudo systemctl start pat@$WHO
sudo systemctl start pat@${WHO}
#Move info.markdown from EES folder to Documents
sudo mv /var/www/html/info.markdown $HOME/Documents/
sudo chown $WHO:$WHO $HOME/Documents/info.markdown
sudo mv /var/www/html/info.markdown ${HOME}/Documents/
sudo chown ${WHO}:${WHO} ${HOME}/Documents/info.markdown
#move info.html to pi documents folder
sudo cp /var/www/html/index.html $HOME/Documents/info.html
sudo chown $WHO:$WHO $HOME/Documents/info.html
sudo cp /var/www/html/index.html ${HOME}/Documents/info.html
sudo chown ${WHO}:${WHO} ${HOME}/Documents/info.html
#move script to be run by cron to bin dir
sudo mv /var/www/html/webcopy $HOME/bin/
sudo chown $WHO:$WHO $HOME/bin/webcopy
sudo chmod +x $HOME/bin/webcopy
sudo mv /var/www/html/webcopy ${HOME}/bin/
sudo chown ${WHO}:${WHO} ${HOME}/bin/webcopy
sudo chmod +x ${HOME}/bin/webcopy
#set up cron job for EES
echo "#-----Start EES Server Options------" >> $TEMPCRON
echo "#Move EES email to Pat Winlink Outbox" >> $TEMPCRON
echo "*/1 * * * * /var/www/html/movetopat" >> $TEMPCRON
echo " " >> $TEMPCRON
echo "#Auto post replies for EES server" >> $TEMPCRON
echo "#Default is off. Activate by removing # on line below" >> $TEMPCRON
echo "#*/1 * * * * /var/www/html/autopostreply" >> $TEMPCRON
echo "#Line below moves info.html to index.html when modified" >> $TEMPCRON
echo "*/1 * * * * $HOME/bin/webcopy" >> $TEMPCRON
echo "#-----End EES Server Options------" >> $TEMPCRON
echo "#-----Start EES Server Options------" >>${TEMPCRON}
echo "#Move EES email to Pat Winlink Outbox" >>${TEMPCRON}
echo "*/1 * * * * /var/www/html/movetopat" >>${TEMPCRON}
echo " " >>${TEMPCRON}
echo "#Auto post replies for EES server" >>${TEMPCRON}
echo "#Default is off. Activate by removing # on line below" >>${TEMPCRON}
echo "#*/1 * * * * /var/www/html/autopostreply" >>${TEMPCRON}
echo "#Line below moves info.html to index.html when modified" >>${TEMPCRON}
echo "*/1 * * * * ${HOME}/bin/webcopy" >>${TEMPCRON}
echo "#-----End EES Server Options------" >>${TEMPCRON}
}
##################################
# Pi-APRS
##################################
PI-APRS() {
cd $HOME
cd ${HOME} || exit
git clone https://github.com/km4ack/Pi-APRS.git
sudo cp ~/Pi-APRS/piaprs.desktop /usr/share/applications
@ -517,17 +509,17 @@ sudo cp ~/Pi-APRS/piaprs.desktop /usr/share/applications
##################################
SMALL() {
sudo apt-get -y install make g++ libx11-dev
cd $DIR
cd ${DIR} || exit
curl -o ESPHamClock.zip http://www.clearskyinstitute.com/ham/HamClock/ESPHamClock.zip
unzip ESPHamClock.zip
rm ESPHamClock.zip
cd ESPHamClock
cd ESPHamClock || exit
sudo make -j 4 hamclock
sudo chmod +s hamclock
sudo mv hamclock /usr/local/bin/hamclock
rm -rf $DIR/ESPHamClock
rm -rf "${DIR}/ESPHamClock"
cat > $HOME/Downloads/hamclock.desktop <<EOF
cat >${HOME}/Downloads/hamclock.desktop <<EOF
[Desktop Entry]
Name=HamClock
GenericName=Ham Clock
@ -539,7 +531,7 @@ Type=Application
Categories=HamRadio;
EOF
sudo mv $HOME/Downloads/hamclock.desktop /usr/share/applications/
sudo mv ${HOME}/Downloads/hamclock.desktop /usr/share/applications/
}
##################################
@ -547,17 +539,17 @@ sudo mv $HOME/Downloads/hamclock.desktop /usr/share/applications/
##################################
LARGE() {
sudo apt-get -y install make g++ libx11-dev
cd $DIR
cd ${DIR} || exit
curl -o ESPHamClock.zip http://www.clearskyinstitute.com/ham/HamClock/ESPHamClock.zip
unzip ESPHamClock.zip
rm ESPHamClock.zip
cd ESPHamClock
cd ESPHamClock || exit
sudo make -j 4 hamclock-1600x960
sudo chmod +s hamclock-1600x960
sudo mv hamclock-1600x960 /usr/local/bin/hamclock
rm -rf $DIR/ESPHamClock
rm -rf "${DIR}/ESPHamClock"
cat > $HOME/Downloads/hamclock.desktop <<EOF
cat >${HOME}/Downloads/hamclock.desktop <<EOF
[Desktop Entry]
Name=HamClock
GenericName=Ham Clock
@ -569,10 +561,9 @@ Type=Application
Categories=HamRadio;
EOF
sudo mv $HOME/Downloads/hamclock.desktop /usr/share/applications/
sudo mv ${HOME}/Downloads/hamclock.desktop /usr/share/applications/
}
##################################
# Gpredict
##################################
@ -586,17 +577,17 @@ sudo apt install -y gpredict
##################################
TQSL() {
sudo apt install -y cmake g++ libexpat1-dev libssl-dev libdb++-dev libcurl4-openssl-dev libwxgtk3.0-dev
cd $HOME
cd ${HOME} || exit
CUR=$(curl -s http://www.arrl.org/tqsl-download | grep "for Linux" | sed 's/.*TQSL //' | awk '{print $1}')
wget http://www.arrl.org/tqsl/tqsl-$CUR.tar.gz
tar -xzvf tqsl-$CUR.tar.gz
rm tqsl-$CUR.tar.gz
cd tqsl-$CUR
wget http://www.arrl.org/tqsl/tqsl-${CUR}.tar.gz
tar -xzvf tqsl-${CUR}.tar.gz
rm "tqsl-${CUR}.tar.gz"
cd tqsl-${CUR} || exit
cmake .
make
sudo make install
sudo cp /home/pi/tqsl-$CUR/apps/tqsl.desktop /usr/share/applications/
rm -rf $HOME/tqsl-$CUR
sudo cp /home/pi/tqsl-${CUR}/apps/tqsl.desktop /usr/share/applications/
rm -rf "${HOME}/tqsl-${CUR}"
}
##################################
@ -606,7 +597,7 @@ rm -rf $HOME/tqsl-$CUR
XLOG() {
#verify hamlib installed
if ! hash rigctld 2>/dev/null; then
cat <<EOF > $HOME/Desktop/XLOG.txt
cat <<EOF >${HOME}/Desktop/XLOG.txt
Xlog could not be installed because hamlib
wasn't found on the system. Use the build
a pi script to install hamlib and then try
@ -614,23 +605,23 @@ installing xlog again.
EOF
else
TARXLOG=$(curl -s https://download.savannah.nongnu.org/releases/xlog/ | \
TARXLOG=$(curl -s https://download.savannah.nongnu.org/releases/xlog/ |
grep 2.[0-9].[0-9][0-9].tar | sort | tail -1 | sed 's/.*xlog/xlog/' | sed 's/.sig.*$//')
DIRXLOG=$(echo $TARXLOG | sed 's/.tar.gz//')
DIRXLOG=$(echo ${TARXLOG} | sed 's/.tar.gz//')
cd $HOME
cd ${HOME} || exit
sudo apt-get install -y libgtkgl2.0-dev libusb-1.0-0-dev
wget https://download.savannah.nongnu.org/releases/xlog/$TARXLOG
tar -xzvf $TARXLOG
rm $TARXLOG
cd $DIRXLOG
wget https://download.savannah.nongnu.org/releases/xlog/${TARXLOG}
tar -xzvf ${TARXLOG}
rm ${TARXLOG}
cd ${DIR}XLOG || exit
./configure
make
sudo make install
cd $HOME
rm -rf $DIRXLOG
cd ${HOME} || exit
rm -rf "${DIR}XLOG"
fi
}
@ -643,18 +634,16 @@ fi
#14OCT2020 KM4ACK
JTDX() {
cd $HOME
cd ${HOME}
#curl won't work here. Returns "forbidden" Use wget instead
wget -qO jtdx.txt https://www.jtdx.tech/en/
VER=$(grep armhf.deb jtdx.txt | awk '{print $2}' | sed 's/"//g' | sed 's/href=\/downloads\/Linux\///')
rm jtdx.txt
wget https://www.jtdx.tech/downloads/Linux/$VER
wget https://www.jtdx.tech/downloads/Linux/${VER}
sudo dpkg -i $VER
sudo dpkg -i ${VER}
sudo apt-get --fix-broken -y install
sudo dpkg -i $VER
rm $VER
sudo dpkg -i ${VER}
rm ${VER}
}

Wyświetl plik

@ -13,8 +13,7 @@ shackwifi=$1
shackpass=$2
wifipasswd=$3
#escape all "&" incase used in HS password
wifipasswd=$(sed 's|&|\\&|g' <<< $wifipasswd)
wifipasswd=$(sed 's|&|\\&|g' <<<${wifipasswd})
#unblock wifi
#needed after buster 20200205
@ -31,18 +30,18 @@ systemctl unmask hostapd
systemctl disable hostapd
systemctl disable dnsmasq
mkdir -p $HOME/temp
cd $HOME/temp
mkdir -p ${HOME}/temp
cd ${HOME}/temp || exit
wget http://www.raspberryconnect.com/images/Autohotspot/autohotspot-95-4/hostapd.txt
#set new hotspot passwd
sed -i "s|wpa_passphrase=1234567890|wpa_passphrase=$wifipasswd|" $HOME/temp/hostapd.txt
sed -i "s|wpa_passphrase=1234567890|wpa_passphrase=${wifipasswd}|" ${HOME}/temp/hostapd.txt
#set country to US
sed -i 's/country_code=GB/country_code=US/' $HOME/temp/hostapd.txt
sed -i 's/country_code=GB/country_code=US/' ${HOME}/temp/hostapd.txt
#move hostapd to correct location
mv $HOME/temp/hostapd.txt /etc/hostapd/hostapd.conf
mv ${HOME}/temp/hostapd.txt /etc/hostapd/hostapd.conf
sed -i s'/#DAEMON_CONF=""/DAEMON_CONF="\/etc\/hostapd\/hostapd.conf"/' /etc/default/hostapd
sed -i s'/DAEMON_OPTS=""/#DAEMON_OPTS=""/' /etc/default/hostapd
@ -63,13 +62,12 @@ mv /etc/network/interfaces /etc/network/interfaces.org
echo "source-directory /etc/network/interfaces.d" >>/etc/network/interfaces
echo "nohook wpa_supplicant" >>/etc/dhcpcd.conf
#setup ip forward
sed 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
cd $HOME/temp
cd ${HOME}/temp || exit
wget http://www.raspberryconnect.com/images/autohotspotN/autohotspotn-95-4/autohotspot-service.txt
@ -82,13 +80,12 @@ systemctl enable autohotspot.service
#check if iw installed. install if not
iwcheck=$(dpkg --get-selections | grep -w "iw")
if [ -z "iw" ]
then
if [ -z "iw" ]; then #THIS MIGHT NEED TO SOME LOOKING AT -- SEE SC2157
apt-get install iw
fi
#install autohotspot script
cd $HOME/temp
cd ${HOME}/temp || exit
wget http://www.raspberryconnect.com/images/autohotspotN/autohotspotn-95-4/autohotspotN.txt
#mod ip address for our custom setup
sed -i 's/192.168.50.5/10.10.10.10/' autohotspotN.txt

Wyświetl plik

@ -1,21 +1,21 @@
#this installs the basic software for build-a-pi
#km4ack 20200513
TEMPCRON=$MYPATH/cron.tmp
DIR=$MYPATH/temp
mkdir -p $DIR
TEMPCRON=${MYPATH}/cron.tmp
DIR=${MYPATH}/temp
mkdir -p ${DIR}
source $MYPATH/config
source ${MYPATH}/config
################################
# HOTSPOT
################################
HOTSPOT() {
HS="/usr/bin/autohotspotN"
if [ ! -f "$HS" ]; then
if [ ! -f "${HS}" ]; then
#pass variables with script because run as root
sudo bash $MYPATH/functions/autohotspot "$SHACKSSID" "$SHACKPASS" "$HSPASS"
echo "*/5 * * * * sudo /usr/bin/autohotspotN >/dev/null 2>&1" >> $TEMPCRON
sudo bash ${MYPATH}/functions/autohotspot "${SHACKSSID}" "${SHACKPASS}" "${HSPASS}"
echo "*/5 * * * * sudo /usr/bin/autohotspotN >/dev/null 2>&1" >>${TEMPCRON}
else
echo ################################
echo ################################
@ -33,22 +33,22 @@ fi
# HOTSPOT TOOLS
################################
HSTOOLS() {
if [ -d $HOME/hotspot-tools2 ]; then
rm -rf $HOME/hotspot-tools2
if [ -d ${HOME}/hotspot-tools2 ]; then
rm -rf ${HOME}/hotspot-tools2
fi
git clone https://github.com/km4ack/hotspot-tools2.git $HOME/hotspot-tools2
sudo cp $HOME/hotspot-tools2/hstools.desktop /usr/share/applications/hotspot-tools.desktop
git clone https://github.com/km4ack/hotspot-tools2.git ${HOME}/hotspot-tools2
sudo cp ${HOME}/hotspot-tools2/hstools.desktop /usr/share/applications/hotspot-tools.desktop
}
################################
# GPS
################################
GPS() {
cd $DIR
cd ${DIR} || exit
wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/gpsinstall
chmod +x $DIR/gpsinstall
sudo $DIR/gpsinstall
rm $DIR/gpsinstall
chmod +x ${DIR}/gpsinstall
sudo ${DIR}/gpsinstall
rm ${DIR}/gpsinstall
#Set GPS by serial ID
#GPS Variable set by main script or update script
#and placed in config file
@ -74,58 +74,58 @@ sudo mv xgps.desktop /usr/share/applications/
# ARDOP
################################
ARDOP() {
mkdir -p $HOME/ardop
cd $HOME/ardop
mkdir -p ${HOME}/ardop
cd ${HOME}/ardop || exit
wget --tries 2 --connect-timeout=60 https://www.cantab.net/users/john.wiseman/Downloads/Beta/piardopc
sudo chmod +x $HOME/ardop/piardopc
sudo chmod +x ${HOME}/ardop/piardopc
}
################################
# ARDOP GUI
################################
ARDOPGUI() {
mkdir -p $HOME/ardop
cd $HOME/ardop
mkdir -p ${HOME}/ardop
cd ${HOME}/ardop || exit
wget --tries 2 --connect-timeout=60 https://www.cantab.net/users/john.wiseman/Downloads/Beta/piARDOP_GUI
sudo chmod +x $HOME/ardop/piARDOP_GUI
sudo chmod +x ${HOME}/ardop/piARDOP_GUI
cat >ardopgui.desktop <<EOF
[Desktop Entry]
Name=ARDOP GUI
GenericName=ARDOP GUI
Comment=Graphical User Interface for ARDOP modem
Exec=$HOME/ardop/piARDOP_GUI
Exec=${HOME}/ardop/piARDOP_GUI
Terminal=false
Type=Application
Categories=Network;HamRadio;
EOF
sudo mv ardopgui.desktop /usr/share/applications/
FILE=$HOME/.config/G8BPQ/ARDOP_GUI.conf
mkdir -p $HOME/.config/G8BPQ
touch $FILE
echo "[General]" >> $FILE
echo "Host=local" >> $FILE
echo "Port=8515" >> $FILE
FILE=${HOME}/.config/G8BPQ/ARDOP_GUI.conf
mkdir -p ${HOME}/.config/G8BPQ
touch ${FILE}
echo "[General]" >>${FILE}
echo "Host=local" >>${FILE}
echo "Port=8515" >>${FILE}
}
################################
# HAMLIB
################################
HAMLIB() {
cd $DIR
NEWRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download | \
grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] | \
cd ${DIR} || exit
NEWRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download |
grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] |
head -n 1 | awk -F "/" '{print $7}')
HAMLIBLINK=https://sourceforge.net/projects/hamlib/files/hamlib/$NEWRIG/hamlib-$NEWRIG.tar.gz
cd $HOME/Downloads
HAMLIBLINK=https://sourceforge.net/projects/hamlib/files/hamlib/${NEWRIG}/hamlib-${NEWRIG}.tar.gz
cd ${HOME}/Downloads || exit
echo "###################################"
echo "# Installing Hamlib "
echo "###################################"
wget --tries 2 --connect-timeout=60 $HAMLIBLINK
wget --tries 2 --connect-timeout=60 ${HAMLIBLINK}
tar -xzf hamlib-$NEWRIG.tar.gz
rm hamlib-$NEWRIG.tar.gz
cd hamlib-$NEWRIG
tar -xzf hamlib-${NEWRIG}.tar.gz
rm hamlib-${NEWRIG}.tar.gz
cd hamlib-${NEWRIG} || exit
./configure
make
sudo make install
@ -136,19 +136,19 @@ sudo ldconfig
# DIREWOLF
################################
DIREWOLF() {
cd $HOME
cd ${HOME} || exit
git clone https://www.github.com/wb2osz/direwolf
cd $HOME/direwolf
mkdir build && cd build
cd ${HOME}/direwolf || exit
(mkdir build && cd build) || exit
sudo apt-get install -y libasound2-dev cmake
cmake ..
make -j 4
sudo make install
make install-conf
sed -i "s/N0CALL/$CALL/" "$HOME/direwolf.conf"
sed -i 's/# ADEVICE plughw:1,0/ADEVICE plughw:2,0/' $HOME/direwolf.conf
sed -i '/#PTT\ \/dev\/ttyUSB0\ RTS/a #Uncomment line below for PTT with sabrent sound card\n#PTT RIG 2 localhost:4532' $HOME/direwolf.conf
rm -rf $HOME/direwolf
sed -i "s/N0CALL/${CALL}/" "${HOME}/direwolf.conf"
sed -i 's/# ADEVICE plughw:1,0/ADEVICE plughw:2,0/' ${HOME}/direwolf.conf
sed -i '/#PTT\ \/dev\/ttyUSB0\ RTS/a #Uncomment line below for PTT with sabrent sound card\n#PTT RIG 2 localhost:4532' ${HOME}/direwolf.conf
rm -rf ${HOME}/direwolf
}
################################
@ -156,7 +156,7 @@ rm -rf $HOME/direwolf
################################
AX25() {
sudo apt-get install -y ax25-tools
echo "wl2k "$CALL" 1200 255 7 Winlink" | sudo tee -a /etc/ax25/axports
echo "wl2k ${CALL} 1200 255 7 Winlink" | sudo tee -a /etc/ax25/axports
sudo apt-get install -y ax25-apps
}
@ -166,32 +166,3 @@ sudo apt-get install -y ax25-apps
PULSE() {
sudo apt-get install -y pavucontrol
}

Wyświetl plik

@ -1,20 +1,17 @@
#script to install FLDIGI from source
#20200121 km4ack
mkdir -p $HOME/Downloads
mkdir -p ${HOME}/Downloads
FLSTART() {
#find how much memory we are working with
FREEMEM=$(free -m | grep Mem: | awk '{ print $2 }')
echo $FREEMEM
echo ${FREEMEM}
##################################
# INCREASE SWAP
##################################
#increase swap file if less than 3G memory
if [ $FREEMEM -lt 3000 ]
then
if [ ${FREEMEM} -lt 3000 ]; then
echo "Increasing Swap size for build"
#increase swap size
sudo sed -i 's/#CONF_SWAPFILE=\/var\/swap/CONF_SWAPFILE=\/var\/swap/' /etc/dphys-swapfile
@ -34,18 +31,17 @@ sudo apt-get install -y libfltk1.3-dev libjpeg9-dev libxft-dev libxinerama-dev l
##################################
FLX=$(ldconfig -p | grep flxmlrpc)
if [ -z "$FLX" ]
then
if [ -z "$FLX" ]; then
#determine latest FLXMLRPC & download
FLXM=$(curl -s http://www.w1hkj.com/files/flxmlrpc/ | grep .tar.gz | sed 's/<li><a\ href="//' | sed 's/">\ flxmlrpc.*$//')
XMPKG=$( echo $FLXM | sed 's/.tar.gz//')
cd $HOME/Downloads
wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flxmlrpc/$FLXM
tar -zxvf $FLXM
rm *.gz
XMPKG=$(echo ${FLXM} | sed 's/.tar.gz//')
cd ${HOME}/Downloads || exit
wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flxmlrpc/${FLXM}
tar -zxvf ${FLXM}
rm ./*.gz #THIS IS DANGEROUS -- SEE SC2035
#build FLXMLRPC
cd $XMPKG
cd ${XMPKG} || exit
./configure --prefix=/usr/local --enable-static
make
sudo make install
@ -59,16 +55,16 @@ FLX=$(ldconfig -p | grep flxmlrpc)
FLRIG() {
#Determine latest FLRIG
RIGTAR=$(curl -s http://www.w1hkj.com/files/flrig/ | grep .tar.gz | sed 's/<li><a\ href="//' | sed 's/">\ flrig.*$//' | tail -1)
RIGPKG=$(echo $RIGTAR | sed 's/.tar.gz//')
RIGPKG=$(echo ${RIGTAR} | sed 's/.tar.gz//')
#Download latest FLRIG
cd $HOME/Downloads
wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flrig/$RIGTAR
tar -zxvf $RIGTAR
rm *.gz
cd ${HOME}/Downloads || exit
wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flrig/${RIGTAR}
tar -zxvf ${RIGTAR}
rm ./*.gz #THIS IS DANGEROUS -- SEE SC2035
#Build FLRIG
cd $RIGPKG
cd ${RIGPKG} || exit
./configure --prefix=/usr/local --enable-static
make
sudo make install
@ -81,16 +77,16 @@ sudo ldconfig
FLWRAP() {
#Determine latest FLWRAP
WRAPTAR=$(curl -s http://www.w1hkj.com/files/flwrap/ | grep .tar.gz | sed 's/<li><a\ href="//' | sed 's/">\ flwrap.*$//')
WRAPPKG=$(echo $WRAPTAR | sed 's/.tar.gz//')
WRAPPKG=$(echo ${WRAPTAR} | sed 's/.tar.gz//')
#Download latest FLWRAP
cd $HOME/Downloads
wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flwrap/$WRAPTAR
tar -zxvf $WRAPTAR
rm *.gz
cd ${HOME}/Downloads || exit
wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flwrap/${WRAPTAR}
tar -zxvf ${WRAPTAR}
rm ./*.gz #THIS IS DANGEROUS -- SEE SC2035
#Build FLRIG
cd $WRAPPKG
cd ${WRAPPKG} || exit
./configure --prefix=/usr/local --enable-static
make
sudo make install
@ -103,17 +99,16 @@ sudo ldconfig
FLDIGI() {
#Determine latest FLDIGI
FLTAR=$(curl -s http://www.w1hkj.com/files/fldigi/ | grep .tar.gz | sed 's/<li><a\ href="//' | sed 's/">\ fldigi.*$//')
FLPKG=$(echo $FLTAR | sed 's/.tar.gz//')
FLPKG=$(echo ${FLTAR} | sed 's/.tar.gz//')
#Download latest FLDIGI tar file
cd $HOME/Downloads
wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/fldigi/$FLTAR
tar -zxvf $FLTAR
rm *.gz
cd ${HOME}/Downloads || exit
wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/fldigi/${FLTAR}
tar -zxvf ${FLTAR}
rm ./*.gz #THIS IS DANGEROUS -- SEE SC2035
#build FLDIGI
cd $FLPKG
cd ${FLPKG} || exit
./configure --prefix=/usr/local --enable-static
make
sudo make install
@ -125,16 +120,16 @@ sudo ldconfig
FLMSG() {
#Determine latest FLMSG
MSGTAR=$(curl -s http://www.w1hkj.com/files/flmsg/ | grep .tar.gz | sed 's/<li><a\ href="//' | sed 's/">\ flmsg.*$//' | tail -1)
MSGPKG=$(echo $MSGTAR | sed 's/.tar.gz//')
MSGPKG=$(echo ${MSGTAR} | sed 's/.tar.gz//')
#download FLMSG
cd $HOME/Downloads
wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flmsg/$MSGTAR
tar -zxvf $MSGTAR
rm *.gz
cd ${HOME}/Downloads || exit
wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flmsg/${MSGTAR}
tar -zxvf ${MSGTAR}
rm ./*.gz #THIS IS DANGEROUS -- SEE SC2035
#Build FLMSG
cd $MSGPKG
cd ${MSGPKG} || exit
./configure --prefix=/usr/local --enable-static
make
sudo make install
@ -146,16 +141,16 @@ sudo ldconfig
FLAMP() {
#determine latest FLAMP
AMPTAR=$(curl -s http://www.w1hkj.com/files/flamp/ | grep .tar.gz | sed 's/<li><a\ href="//' | sed 's/">\ flamp.*$//')
AMPPKG=$(echo $AMPTAR | sed 's/.tar.gz//')
AMPPKG=$(echo ${AMPTAR} | sed 's/.tar.gz//')
#download FLAMP
cd $HOME/Downloads
cd ${HOME}/Downloads || exit
wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flamp/$AMPTAR
tar -zxvf $AMPTAR
rm *.gz
tar -zxvf ${AMPTAR}
rm ./*.gz #THIS IS DANGEROUS -- SEE SC2035
#build FLAMP
cd $AMPPKG
cd ${AMPPKG} || exit
./configure --prefix=/usr/local --enable-static
make
sudo make install
@ -167,16 +162,16 @@ sudo ldconfig
FLNET() {
#determine lastest FLNET
NETTAR=$(curl -s http://www.w1hkj.com/files/flnet/ | grep .tar.gz | sed 's/<li><a\ href="//' | sed 's/">\ flnet.*$//')
NETPKG=$(echo $NETTAR | sed 's/.tar.gz//')
NETPKG=$(echo ${NETTAR} | sed 's/.tar.gz//')
#download FLNET
cd $HOME/Downloads
cd ${HOME}/Downloads || exit
wget --tries 2 --connect-timeout=60 http://www.w1hkj.com/files/flnet/$NETTAR
tar -zxvf $NETTAR
rm *.gz
tar -zxvf ${NETTAR}
rm ./*.gz #THIS IS DANGEROUS -- SEE SC2035
#build FLNET
cd $NETPKG
cd ${NETPKG} || exit
./configure --prefix=/usr/local --enable-static
make
sudo make install
@ -187,8 +182,7 @@ sudo ldconfig
##################################
FLSTOP() {
#reset swap size to default
if [ $FREEMEM -lt 3000 ]
then
if [ ${FREEMEM} -lt 3000 ]; then
echo "Resetting swap size to default"
#increase swap size
sudo sed -i 's/CONF_SWAPFILE=\/var\/swap/#CONF_SWAPFILE=\/var\/swap/' /etc/dphys-swapfile
@ -196,8 +190,3 @@ sudo sed -i 's/CONF_SWAPSIZE=1024/CONF_SWAPSIZE=100/' /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile restart
fi
}

Wyświetl plik

@ -1,12 +1,8 @@
##################################
# DIPOLE CALC
##################################
DIPOLE() {
cd $HOME/bin
cd ${HOME}/bin || exit
wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/dipole
chmod +x dipole
@ -15,7 +11,7 @@ cat > dipole.desktop <<EOF
Name=Dipole Calculator
GenericName=Dipole Calc
Comment=Dipole Calculator
Exec=$HOME/bin/dipole
Exec=${HOME}/bin/dipole
Icon=/usr/share/icons/Adwaita/scalable/apps/accessories-calculator-symbolic.svg
Terminal=false
Type=Application
@ -30,7 +26,7 @@ sudo mv dipole.desktop /usr/share/applications/
# Call Lookup
##################################
CALLSIGN() {
cd $HOME/bin
cd ${HOME}/bin || exit
wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/getcall
chmod +x getcall
@ -39,7 +35,7 @@ cat > getcall.desktop <<EOF
Name=Call Sign Lookup
GenericName=Call sign lookup utility
Comment=Call sign lookup utility
Exec=$HOME/bin/getcall
Exec=${HOME}/bin/getcall
Icon=/usr/share/icons/Adwaita/scalable/apps/user-info-symbolic.svg
Terminal=false
Type=Application
@ -56,7 +52,7 @@ TEMPCONVERT(){
if ! hash bc 2>/dev/null; then
sudo apt-get install -y bc
fi
cd $HOME/bin
cd ${HOME}/bin || exit
wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/converttemp
chmod +x converttemp
@ -65,7 +61,7 @@ cat > converttemp.desktop <<EOF
Name=Temperature Converter
GenericName=Temperature Converter
Comment=Utility to convert temperature
Exec=$HOME/bin/converttemp
Exec=${HOME}/bin/converttemp
Icon=/usr/share/icons/Adwaita/22x22/actions/mark-location.png
Terminal=false
Type=Application
@ -87,7 +83,7 @@ sudo apt-get install -y gparted
##################################
SHOWLOG() {
cd $HOME/bin
cd ${HOME}/bin || exit
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/showlog
chmod +x showlog
@ -96,7 +92,7 @@ cat > showlog.desktop <<EOF
Name=Log Viewer
GenericName=KM4ACK Log Viewer
Comment=Log File Viewer
Exec=$HOME/bin/showlog
Exec=${HOME}/bin/showlog
Icon=/usr/share/icons/PiXflat/48x48/apps/fm-details.png
Terminal=false
Type=Application
@ -116,7 +112,7 @@ DOUBLE=$(sudo i2cdetect -y 1 | grep UU)
if [ -n "$DOUBLE" ]; then
yad --form --width=500 --text-align=center --center --title="Build-a-Pi" --text-align=center \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="Real Time Clock already installed" \
--button=gtk-close
#exit statement here causes script to exit without finishing. Reference link next line
@ -126,12 +122,11 @@ else
IC2ACTIVE=$(ls /dev/*i2c*)
if [ $IC2ACTIVE = '/dev/i2c-1' ]
then
if [ ${IC2ACTIVE} = '/dev/i2c-1' ]; then
echo "IC2 is active"
else
yad --form --width=500 --text-align=center --center --title="Build-a-Pi" --text-align=center \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="Please enable IC2 interface in the Raspberry Pi Configuration and try again" \
--button=gtk-close
exit 1
@ -140,18 +135,17 @@ fi
NOW=$(date)
INFO=$(yad --form --width=500 --text-align=center --center --title="Build-a-Pi" --text-align=center \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="<b>System time is $NOW</b>" \
--field="Is this Correct":CB "yes|no" \
--button="Continue")
echo $?
TIME=$(echo $INFO | awk -F "|" '{print $1}')
TIME=$(echo ${INFO} | awk -F "|" '{print $1}')
if [ $TIME = 'no' ]; then
if [ ${TIME} = 'no' ]; then
yad --form --width=500 --text-align=center --center --title="Build-a-Pi" --text-align=center \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="Please set time on the Raspberry Pi and try again. You can set time \
by connecting to the internet or attaching a GPS" \
--button=gtk-close
@ -160,10 +154,9 @@ fi
CLOCK=$(sudo i2cdetect -y 1 | grep 68)
if [ -z "$CLOCK" ]; then
yad --form --width=500 --text-align=center --center --title="Build-a-Pi" --text-align=center \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="Real Time Clock not detected. Please be sure the RTC is installed and seated firmly" \
--button=gtk-close
exit 1
@ -180,7 +173,7 @@ echo "date" | sudo tee -a /etc/rc.local > /dev/null 2>&1
echo "exit 0" | sudo tee -a /etc/rc.local >/dev/null 2>&1
yad --form --width=500 --text-align=center --center --title="Build-a-Pi" --text-align=center \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="Real Time Clock has been installed and configured" \
--button=gtk-close
fi
@ -188,24 +181,23 @@ fi
fi #close first if/then statement
}
##################################
# PISTATS
##################################
PISTATS() {
cd $HOME
cd ${HOME} || exit
CUR=$(curl -s http://www.w1hkj.com/pi3/ | grep .tgz | sed 's/.*pistats//' | sed 's/<\/a><br>//')
wget http://www.w1hkj.com/pi3/pistats$CUR
tar -xzvf pistats$CUR
rm pistats$CUR
PISTATDIR=$(ls $HOME | grep pistats)
cd $PISTATDIR
wget http://www.w1hkj.com/pi3/pistats${CUR}
tar -xzvf pistats${CUR}
rm pistats${CUR}
PISTATDIR=$(ls ${HOME} | grep pistats)
cd ${PISTATDIR} || exit
sudo apt-get install -y libfltk1.3-dev
make
sudo mv pistats /usr/local/bin
sudo mv $HOME/$PISTATDIR/data/pistats.desktop /usr/share/applications/
cd $HOME
rm -rf $PISTATDIR
sudo mv ${HOME}/${PISTATDIR}/data/pistats.desktop /usr/share/applications/
cd ${HOME} || exit
rm -rf "${PISTATDIR}"
}
##################################
@ -219,7 +211,7 @@ sudo apt install -y telnet
# PiQtTermTCP
##################################
PITERM() {
cd $DIR
cd ${DIR} || exit
wget https://www.cantab.net/users/john.wiseman/Downloads/Beta/piQtTermTCP
sudo chmod +x piQtTermTCP
sudo mv piQtTermTCP /usr/local/bin/
@ -244,11 +236,11 @@ sudo mv piqttermtcp.desktop /usr/share/applications/
# Security Tools
##################################
SECURITY() {
cd $HOME/bin
cd ${HOME}/bin || exit
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/security-tools
bash security-tools
sudo mv $HOME/bin/securefile /usr/local/bin
sudo mv ${HOME}/bin/securefile /usr/local/bin
cat >secure-file.desktop <<EOF
[Desktop Entry]
@ -269,7 +261,7 @@ sudo mv secure-file.desktop /usr/share/applications/
# YGATE
##################################
YGATE() {
cd $HOME/bin
cd ${HOME}/bin || exit
wget https://raw.githubusercontent.com/craigerl/ygate/master/ygate.py
chmod +x ygate.py
@ -278,7 +270,7 @@ cat > ygate.desktop <<EOF
Name=YGATE
GenericName=YGATE
Comment=Yaesu APRS Application
Exec=$HOME/bin/ygate.py
Exec=${HOME}/bin/ygate.py
Terminal=true
Type=Application
Categories=Utility
@ -288,28 +280,27 @@ sudo mv ygate.desktop /usr/share/applications/
}
##################################
# BPQ
##################################
BPQ() {
source $HOME/pi-build/config
source ${HOME}/pi-build/config || exit
#install LinBPQ
cd
cd || exit
##########################################################################
#commands below this line were taken from John Wiseman's install script.
#and modded to pull the operators call sign from the BAP config file.
#http://www.cantab.net/users/john.wiseman/Downloads/installLinRMS
##########################################################################
export LINBPQ=pilinbpq;
export LINBPQ=pilinbpq
export APRS=piBPQAPRS
echo "Downloading $LINBPQ and $APRS to linbpq and bpqaprs"
echo "Downloading ${LINBPQ} and ${APRS} to linbpq and bpqaprs"
mkdir linbpq
cd linbpq
wget -nv http://www.cantab.net/users/john.wiseman/Downloads/Beta/$LINBPQ -O linbpq
cd linbpq || exit
wget -nv http://www.cantab.net/users/john.wiseman/Downloads/Beta/${LINBPQ} -O linbpq
chmod +x linbpq
wget -nv http://www.cantab.net/users/john.wiseman/Downloads/Beta/$APRS -O bpqaprs
wget -nv http://www.cantab.net/users/john.wiseman/Downloads/Beta/${APRS} -O bpqaprs
chmod +x bpqaprs
echo "Downloading config files"
@ -319,11 +310,11 @@ wget -nv http://www.cantab.net/users/john.wiseman/Downloads/SimpleRMSGateway_bpq
echo "Downloading HTML Files"
mkdir HTML
cd HTML
cd HTML || exit
wget -nv http://www.cantab.net/users/john.wiseman/Downloads/Beta/HTMLPages.zip
unzip -o -q HTMLPages.zip
rm HTMLPages.zip
cd ..
cd .. || exit
wget -nv http://www.cantab.net/users/john.wiseman/Downloads/LinBPQAPRS.zip
unzip -o -q LinBPQAPRS.zip
rm LinBPQAPRS.zip
@ -339,7 +330,7 @@ sed -i "s/MYCALL/$CALL/g" bpq32.cfg
#End John Wiseman install script
#####################################################
#install BPQ config generator
cd $HOME/linbpq
cd ${HOME}/linbpq || exit
wget https://www.cantab.net/users/john.wiseman/Downloads/Beta/piBPQConfigGen
chmod +x piBPQConfigGen
@ -348,7 +339,7 @@ cat > bpq-config.desktop <<EOF
Name=BPQ Config Generator
GenericName=BPQ Config Generator
Comment=Config File Generator for LinBPQ
Exec=$HOME/linbpq/piBPQConfigGen
Exec=${HOME}/linbpq/piBPQConfigGen
Terminal=false
Type=Application
Categories=Utility
@ -357,9 +348,9 @@ EOF
sudo mv bpq-config.desktop /usr/share/applications/
#add LinBPQ-README to desktop
FILE=$HOME/Desktop/LinBPQ-README
touch $FILE
cat << EOF > $FILE
FILE=${HOME}/Desktop/LinBPQ-README
touch ${FILE}
cat <<EOF >${FILE}
LinBPQ was installed during the build.
You will find the config file generator
under accessories in the main pi menu.
@ -389,7 +380,7 @@ EOF
# Battery Test Script
##################################
BATT() {
cd $HOME/bin
cd ${HOME}/bin || exit
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/batt-test
chmod +x batt-test
@ -398,7 +389,7 @@ cat > battery-test.desktop <<EOF
Name=Battery Test Script
GenericName=Battery Test Script
Comment=Battery Test Utility
Exec=$HOME/bin/batt-test
Exec=${HOME}/bin/batt-test
Terminal=true
Type=Application
Categories=Utility
@ -412,13 +403,13 @@ sudo mv battery-test.desktop /usr/share/applications/
# VNC Viewer
##################################
VNC() {
cd $HOME
PACKAGE=$(curl -s https://www.realvnc.com/en/connect/download/viewer/raspberrypi/ | grep .deb | awk '{print $2}' | \
cd ${HOME} || exit
PACKAGE=$(curl -s https://www.realvnc.com/en/connect/download/viewer/raspberrypi/ | grep .deb | awk '{print $2}' |
sed 's/href="\/download\/file\/viewer.files\///' | sed 's/"//')
wget https://realvnc.com/download/file/viewer.files/$PACKAGE
sudo dpkg -i $PACKAGE
rm $PACKAGE
wget https://realvnc.com/download/file/viewer.files/${PACKAGE}
sudo dpkg -i ${PACKAGE}
rm ${PACKAGE}
}
##################################
@ -434,11 +425,11 @@ sudo apt install -y zygrib-maps
##################################
GPSUPDATE() {
#remove existing file if needed before installing
if [ -f $HOME/bin/gpsupdate ]; then
rm $HOME/bin/gpsupdate
if [ -f ${HOME}/bin/gpsupdate ]; then
rm ${HOME}/bin/gpsupdate
fi
cd $HOME/bin
cd ${HOME}/bin || exit
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/gpsupdate
chmod +x gpsupdate
@ -447,7 +438,7 @@ cat > gpsupdate.desktop <<EOF
Name=GPS Update Tool
GenericName=Used to change between GPS units
Comment=Used to change between GPS units
Exec=$HOME/bin/gpsupdate
Exec=${HOME}/bin/gpsupdate
Terminal=false
Type=Application
Categories=Utility
@ -462,11 +453,11 @@ sudo mv gpsupdate.desktop /usr/share/applications/
REMOVEMS() {
#download the file
cd $HOME/bin
cd ${HOME}/bin || exit
wget https://raw.githubusercontent.com/km4ack/pi-scripts/master/removeMS
chmod +x $HOME/bin/removeMS
chmod +x ${HOME}/bin/removeMS
#place user directions on desktop
cat <<EOF>$HOME/Desktop/Block-Microsoft.txt
cat <<EOF >${HOME}/Desktop/Block-Microsoft.txt
You have chosen to install the removeMS
script which will block the Pi from accessing
the Microsoft repository. The block has not
@ -485,4 +476,3 @@ More information is available in this video
https://youtu.be/I7jLVgnnUW0
EOF
}

433
update
Wyświetl plik

@ -13,31 +13,31 @@
##################################################################
MYPATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
BASE=$MYPATH/base.txt
FUNCTIONS=$MYPATH/functions
ADDITIONAL=$MYPATH/additional.txt
UTILITY=$MYPATH/utility.txt
FLSUITE=$MYPATH/flsuite.txt
CONFIG=$MYPATH/config
LOGO=$MYPATH/logo.png
TEMPCRON=$MYPATH/cron.tmp
VERSION=$(grep "version=" $MYPATH/changelog | sed 's/version=//')
BASE=${MYPATH}/base.txt
FUNCTIONS=${MYPATH}/functions
ADDITIONAL=${MYPATH}/additional.txt
UTILITY=${MYPATH}/utility.txt
FLSUITE=${MYPATH}/flsuite.txt
CONFIG=${MYPATH}/config
LOGO=${MYPATH}/logo.png
TEMPCRON=${MYPATH}/cron.tmp
VERSION=$(grep "version=" ${MYPATH}/changelog | sed 's/version=//')
FINISH() {
if [ -f "$BASE" ]; then
rm $BASE
if [ -f "${BASE}" ]; then
rm ${BASE}
fi
if [ -f "$ADDITIONAL" ]; then
rm $ADDITIONAL
if [ -f "${ADDITIONAL}" ]; then
rm ${ADDITIONAL}
fi
if [ -f "$FLSUITE" ]; then
rm $FLSUITE
if [ -f "${FLSUITE}" ]; then
rm ${FLSUITE}
fi
if [ -f "$UTILITY" ]; then
rm $UTILITY
if [ -f "${UTILITY}" ]; then
rm ${UTILITY}
fi
}
@ -46,81 +46,83 @@ trap FINISH EXIT
#remove temp dir if exist
#fix issue 108 https://github.com/km4ack/pi-build/issues/108
#Thanks to N5RKS for finding the bug
if [ -d $HOME/pi-build/temp ]; then
rm -rf $HOME/pi-build/temp
if [ -d ${HOME}/pi-build/temp ]; then
rm -rf ${HOME}/pi-build/temp
fi
#####################################
# Create autostart dir
#used to autostart conky at boot
#####################################
mkdir -p $HOME/.config/autostart
mkdir -p ${HOME}/.config/autostart
#Check for BAP updates
#Check for build a pi updates
echo "Checking for Build a Pi updates"
CURRENT=$(head -1 $MYPATH/changelog | sed s'/version=//')
CURRENT=$(head -1 ${MYPATH}/changelog | sed s'/version=//')
LATEST=$(curl -s https://raw.githubusercontent.com/km4ack/pi-build/master/changelog | tac | tac | head -1 | sed 's/version=//')
if (( $(echo "$LATEST $CURRENT" | awk '{print ($1 > $2)}') ))
then
cat <<EOF > $MYPATH/updatebap.txt
if (($(echo "$LATEST $CURRENT" | awk '{print ($1 > $2)}'))); then
cat <<EOF >${MYPATH}/updatebap.txt
Build a Pi update available. Current version is $CURRENT and
the lateest version is $LATEST. Would you like to update?
Change log - https://github.com/km4ack/pi-build/blob/master/changelog
EOF
BAP=$(yad --width=650 --height=250 --text-align=center --center --title="Build-a-Pi" --show-uri \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--text-info<$MYPATH/updatebap.txt \
BAP=$(
yad --width=650 --height=250 --text-align=center --center --title="Build-a-Pi" --show-uri \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text-info \
--button="Yes":2 \
--button="No":3)
--button="No":3 <${MYPATH}/updatebap.txt
)
BUT=$?
echo $BUT
echo ${BUT}
##########
if [ $BUT = 252 ]; then
if [ ${BUT} = 252 ]; then
exit
elif [ $BUT = 2 ]; then
elif [ ${BUT} = 2 ]; then
wget -q --tries=5 --timeout=10 --spider http://google.com #| yad --center --progress --pulsate --timeout-indicator=top --auto-close --no-buttons --text="Checking internet connection"
if [[ $? -eq 1 ]]; then
yad --center --timeout=3 --timeout-indicator=top --no-buttons --text="You are not connected to the internet"
exit
fi
echo "Updating Build a Pi to $LATEST"
mv $MYPATH/config $HOME/Documents/config.bap
rm -rf $MYPATH
cd ~
mv ${MYPATH}/config ${HOME}/Documents/config.bap
rm -rf ${MYPATH}
cd ~ || exit
git clone https://github.com/km4ack/pi-build.git
mv $HOME/Documents/config.bap $MYPATH/config
mv ${HOME}/Documents/config.bap ${MYPATH}/config
cat <<EOF > $MYPATH/updatebap.txt
cat <<EOF >${MYPATH}/updatebap.txt
Build a Pi has been updated to $LATEST. Please restart Build a Pi.
EOF
BAP=$(yad --width=650 --height=250 --text-align=center --center --title="Build-a-Pi" --show-uri \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--text-info<$MYPATH/updatebap.txt \
--button="OK":2)
BAP=$(
yad --width=650 --height=250 --text-align=center --center --title="Build-a-Pi" --show-uri \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text-info \
--button="OK":2 <${MYPATH}/updatebap.txt
)
BUT=$?
exit 0
fi
##########
fi
rm $MYPATH/updatebap.txt >> /dev/null 2>&1
rm $MYPATH/complete.txt >> /dev/null 2>&1
rm ${MYPATH}/updatebap.txt >>/dev/null 2>&1
rm ${MYPATH}/complete.txt >>/dev/null 2>&1
clear
#Scan system for updated applications
yad --width=550 --height=250 --text-align=center --center --title="Update" \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="<b>Version $VERSION</b>\r\r\r\rFirst we need to scan the system to see what is installed, \
then check for updates on the web. This should take less than a minute. Ready when you are." \
--button="Exit":1 \
--button="Start Scan":2
BUT=$?
if [ $BUT = 252 ] || [ $BUT = 1 ]; then
if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then
exit
fi
@ -169,7 +171,7 @@ fi
#----------------------------------------------------#
# ARDOP
#----------------------------------------------------#
if [ -f $HOME/ardop/piardopc ]; then
if [ -f ${HOME}/ardop/piardopc ]; then
ARDOP="Installed"
else
ARDOP="Not Installed"
@ -177,7 +179,7 @@ fi
#----------------------------------------------------#
# ARDOP GUI
#----------------------------------------------------#
if [ -f $HOME/ardop/piARDOP_GUI ]; then
if [ -f ${HOME}/ardop/piARDOP_GUI ]; then
ARDOPGUI="Installed"
else
ARDOPGUI="Not Installed"
@ -201,7 +203,7 @@ fi
#----------------------------------------------------#
# CONKY
#----------------------------------------------------#
if [ -f $HOME/.conkyrc ]; then
if [ -f ${HOME}/.conkyrc ]; then
CONKY=Installed
else
CONKY="Not Installed"
@ -223,12 +225,11 @@ RIG="Not_Installed"
else
echo "Checking Rig Control"
RIG=$(rigctl --version | grep Hamlib | sed s/"rigctl(d),\ Hamlib\ "//)
NEWRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download | \
grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] | \
NEWRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download |
grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] |
head -n 1 | awk -F "/" '{print $7}')
if (( $(echo "$NEWRIG $RIG" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWRIG} ${RIG}" | awk '{print ($1 > $2)}'))); then
RIG=NEEDS-UPDATE
else
RIG="is_latest_version"
@ -243,11 +244,10 @@ if ! hash fldigi 2>/dev/null; then
FLDIGI="Not_Installed"
else
FLDIGI=$(fldigi --version | awk 'FNR == 1 {print $2}')
NEWFLDIGI=$(curl -s https://sourceforge.net/projects/fldigi/files/fldigi/ | \
NEWFLDIGI=$(curl -s https://sourceforge.net/projects/fldigi/files/fldigi/ |
grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar" '{print $1}')
if (( $(echo "$NEWFLDIGI $FLDIGI" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWFLDIGI} ${FLDIGI}" | awk '{print ($1 > $2)}'))); then
FLDIGI=NEEDS-UPDATE
else
FLDIGI="is_latest_version"
@ -262,11 +262,10 @@ if ! hash flwrap 2>/dev/null; then
FLWRAP="Not_Installed"
else
FLWRAP=$(flwrap --version | awk 'FNR == 1 {print $2}')
NEWFLWRAP=$(curl -s http://www.w1hkj.com/files/flwrap/ | grep .tar.gz | sed 's/<li><a\ href="//' | \
NEWFLWRAP=$(curl -s http://www.w1hkj.com/files/flwrap/ | grep .tar.gz | sed 's/<li><a\ href="//' |
sed 's/">\ flwrap.*$//' | sed 's/flwrap-//' | sed 's/.tar.gz//')
if (( $(echo "$NEWFLWRAP $FLWRAP" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWFLWRAP} ${FLWRAP}" | awk '{print ($1 > $2)}'))); then
FLWRAP=NEEDS-UPDATE
else
FLWRAP="is_latest_version"
@ -281,11 +280,10 @@ if ! hash flrig 2>/dev/null; then
FLRIG="Not_Installed"
else
FLRIG=$(flrig --version | awk 'FNR == 1 {print $2}')
NEWFLRIG=$(curl -s https://sourceforge.net/projects/fldigi/files/flrig/ | \
NEWFLRIG=$(curl -s https://sourceforge.net/projects/fldigi/files/flrig/ |
grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}')
if (( $(echo "$NEWFLRIG $FLRIG" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWFLRIG} ${FLRIG}" | awk '{print ($1 > $2)}'))); then
FLRIG=NEEDS-UPDATE
else
FLRIG="is_latest_version"
@ -299,11 +297,10 @@ if ! hash flamp 2>/dev/null; then
FLAMP="Not_Installed"
else
FLAMP=$(flamp --version | awk 'FNR == 1 {print $2}')
NEWFLAMP=$(curl -s https://sourceforge.net/projects/fldigi/files/flamp/ | \
NEWFLAMP=$(curl -s https://sourceforge.net/projects/fldigi/files/flamp/ |
grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}')
if (( $(echo "$NEWFLAMP $FLAMP" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWFLAMP} ${FLAMP}" | awk '{print ($1 > $2)}'))); then
FLAMP=NEEDS-UPDATE
else
FLAMP="is_latest_version"
@ -317,11 +314,10 @@ if ! hash flmsg 2>/dev/null; then
FLMSG="Not_Installed"
else
FLMSG=$(flmsg --version | awk 'FNR == 1 {print $2}')
NEWFLMSG=$(curl -s https://sourceforge.net/projects/fldigi/files/flmsg/ | \
NEWFLMSG=$(curl -s https://sourceforge.net/projects/fldigi/files/flmsg/ |
grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}')
if (( $(echo "$NEWFLMSG $FLMSG" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWFLMSG} ${FLMSG}" | awk '{print ($1 > $2)}'))); then
FLMSG=NEEDS-UPDATE
else
FLMSG="is_latest_version"
@ -335,11 +331,10 @@ if ! hash flnet 2>/dev/null; then
FLNET="Not_Installed"
else
FLNET=$(flnet --version | awk 'FNR == 1 {print $2}')
NEWFLNET=$(curl -s https://sourceforge.net/projects/fldigi/files/flnet/ | \
NEWFLNET=$(curl -s https://sourceforge.net/projects/fldigi/files/flnet/ |
grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar" '{print $1}')
if (( $(echo "$NEWFLNET $FLNET" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWFLNET} ${FLNET}" | awk '{print ($1 > $2)}'))); then
FLNET=NEEDS-UPDATE
else
FLNET="is_latest_version"
@ -354,11 +349,10 @@ PAT="Not_Installed"
else
PAT=$(pat version | awk '{print $2}' | sed 's/v//' | sed 's/0\.//')
NEWPATV=$(curl -s https://github.com/la5nta/pat/releases | grep armhf | head -1 | sed 's/.*pat_/pat_/' | sed 's/<\/a>.*$//')
NEWPAT=$(echo $NEWPATV | sed 's/pat_//' | sed 's/_linux_armhf.deb//' | sed 's/0\.//')
VERTEST=$(echo "$NEWPAT>$PAT" | bc)
NEWPAT=$(echo ${NEWPATV} | sed 's/pat_//' | sed 's/_linux_armhf.deb//' | sed 's/0\.//')
VERTEST=$(echo "${NEWPAT}>${PAT}" | bc)
if [ "$VERTEST" = 1 ]
then
if [ "$VERTEST" = 1 ]; then
PAT=NEEDS-UPDATE
else
PAT="is_latest_version"
@ -372,12 +366,11 @@ if ! hash chirpw 2>/dev/null; then
CHIRP="Not_Installed"
else
CP=$(chirpw --version)
CHIRP=$(echo $CP | awk '{ print $2 }' | sed 's/daily-//')
NEWCHIRP=$(curl -s https://trac.chirp.danplanet.com/chirp_daily/LATEST/ | \
CHIRP=$(echo ${CP} | awk '{ print $2 }' | sed 's/daily-//')
NEWCHIRP=$(curl -s https://trac.chirp.danplanet.com/chirp_daily/LATEST/ |
grep .tar.gz | awk -F 'chirp-daily-' '{print $2}' | head -c 8)
if (( $(echo "$NEWCHIRP $CHIRP" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWCHIRP} ${CHIRP}" | awk '{print ($1 > $2)}'))); then
CHIRP=NEEDS-UPDATE
else
CHIRP="is_latest_version"
@ -394,8 +387,7 @@ DIRE=$(direwolf -S -t 0 | head -1 | sed 's/Dire\ Wolf\ version\ //')
wget -P /tmp/ https://raw.githubusercontent.com/wb2osz/direwolf/master/CHANGES.md >/dev/null 2>&1
NEWDIRE=$(cat /tmp/CHANGES.md | head -5 | tail -1 | awk '{ print $3 }')
if (( $(echo "$NEWDIRE $DIRE" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWDIRE} ${DIRE}" | awk '{print ($1 > $2)}'))); then
DIRE=NEEDS-UPDATE
else
DIRE="is_latest_version"
@ -405,16 +397,15 @@ fi
# Pat Menu
#----------------------------------------------------#
echo "Checking Pat Menu"
if [ ! -d $HOME/patmenu2 ]; then
if [ ! -d ${HOME}/patmenu2 ]; then
PATMENU="Not_Installed"
else
cd $HOME/patmenu2/
wget -O $HOME/patmenu2/latest https://raw.githubusercontent.com/km4ack/patmenu2/master/changelog > /dev/null 2>&1
LATEST=$(cat $HOME/patmenu2/latest | grep '^release' | sed 's/release=//')
CURRENT=$(cat $HOME/patmenu2/changelog | grep '^release' | sed 's/release=//')
rm $HOME/patmenu2/latest > /dev/null 2>&1
if (( $(echo "$LATEST $CURRENT" | awk '{print ($1 > $2)}') ))
then
cd ${HOME}/patmenu2/ || exit
wget -O ${HOME}/patmenu2/latest https://raw.githubusercontent.com/km4ack/patmenu2/master/changelog >/dev/null 2>&1
LATEST=$(cat ${HOME}/patmenu2/latest | grep '^release' | sed 's/release=//')
CURRENT=$(cat ${HOME}/patmenu2/changelog | grep '^release' | sed 's/release=//')
rm ${HOME}/patmenu2/latest >/dev/null 2>&1
if (($(echo "${LATEST} ${CURRENT}" | awk '{print ($1 > $2)}'))); then
PATMENU="NEEDS-UPDATE"
else
PATMENU="is_latest_version"
@ -424,13 +415,12 @@ fi
#----------------------------------------------------#
# Hot Spot Tools
#----------------------------------------------------#
if [ ! -d $HOME/hotspot-tools2 ]; then
if [ ! -d ${HOME}/hotspot-tools2 ]; then
HSTOOLS="Not_Installed"
else
CURRENT=$(cat $HOME/hotspot-tools2/changelog | grep version= | sed 's/version=//')
CURRENT=$(cat ${HOME}/hotspot-tools2/changelog | grep version= | sed 's/version=//')
LATEST=$(curl -s https://raw.githubusercontent.com/km4ack/hotspot-tools2/master/changelog | grep version= | sed 's/version=//')
if (( $(echo "$LATEST $CURRENT" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${LATEST} ${CURRENT}" | awk '{print ($1 > $2)}'))); then
HSTOOLS="NEEDS-UPDATE"
else
HSTOOLS="is_latest_version"
@ -447,8 +437,7 @@ else
GARIM=$(garim --version | head -n1 | awk -F ' ' '{print $2}')
NEWGARIM=$(curl -s https://www.whitemesa.net/garim/garim.html | grep -m 1 \
"armv7l.tar.gz" | awk -F '-' '{print $2}')
if (( $(echo "$NEWGARIM $GARIM" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWGARIM} ${GARIM}" | awk '{print ($1 > $2)}'))); then
GARIM=NEEDS-UPDATE
else
GARIM="is_latest_version"
@ -461,8 +450,7 @@ fi
LATESTXAS=$(curl -s https://github.com/Xastir/Xastir | grep Release- | head -1 | sed 's/.*Release-//;s/">//')
CURRENTXAS=$(xastir -V | sed 's/Xastir V//;s/(.*//;/^\s*$/d')
if (( $(echo "$LATESTXAS $CURRENTXAS" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${LATESTXAS} ${CURRENTXAS}" | awk '{print ($1 > $2)}'))); then
XASTIR=NEEDS-UPDATE
else
XASTIR="is_latest_version"
@ -471,16 +459,15 @@ CURRENTXAS=$(xastir -V | sed 's/Xastir V//;s/(.*//;/^\s*$/d')
#----------------------------------------------------#
# YAAC
#----------------------------------------------------#
YAAC="$HOME/YAAC"
YAAC="${HOME}/YAAC"
if [ ! -d "$YAAC" ]; then
YAAC="Not Installed"
else
echo "Checking YAAC for updates"
CURYAAC=$(java -jar $HOME/YAAC/YAAC.jar -version | grep core | awk '{print $7}' | sed 's/(.*//;s/1.0-beta//')
wget -q https://sourceforge.net/projects/yetanotheraprsc/files/YAACBuildLabel.txt -O /run/user/$UID/latestyaac.txt
LATESTYAAC=$(cat /run/user/$UID/latestyaac.txt | sed 's/1.0-beta//;s/(.*//')
if (( $(echo "$LATESTYAAC $CURYAAC" | awk '{print ($1 > $2)}') ))
then
CURYAAC=$(java -jar ${HOME}/YAAC/YAAC.jar -version | grep core | awk '{print $7}' | sed 's/(.*//;s/1.0-beta//')
wget -q https://sourceforge.net/projects/yetanotheraprsc/files/YAACBuildLabel.txt -O /run/user/${UID}/latestyaac.txt
LATESTYAAC=$(cat /run/user/${UID}/latestyaac.txt | sed 's/1.0-beta//;s/(.*//')
if (($(echo "${LATESTYAAC} ${CURYAAC}" | awk '{print ($1 > $2)}'))); then
YAAC=NEEDS-UPDATE
else
YAAC="is_latest_version"
@ -508,7 +495,7 @@ fi
#----------------------------------------------------#
# GRIDTRACKER
#----------------------------------------------------#
GT="$HOME/GridTracker"
GT="${HOME}/GridTracker"
if [ ! -d "$GT" ]; then
GRIDTRACK="Not Installed"
else
@ -545,7 +532,7 @@ fi
#----------------------------------------------------#
# Pi-APRS
#----------------------------------------------------#
if [ -d $HOME/Pi-APRS ]; then
if [ -d ${HOME}/Pi-APRS ]; then
PIAPRS=Installed
else
PIAPRS="Not Installed"
@ -554,7 +541,7 @@ fi
#----------------------------------------------------#
# Temp Convert
#----------------------------------------------------#
if [ -f $HOME/bin/converttemp ]; then
if [ -f ${HOME}/bin/converttemp ]; then
TEMPCONVERT="Installed"
else
TEMPCONVERT="Not Installed"
@ -572,7 +559,7 @@ fi
#----------------------------------------------------#
# DIPOLE CALCULATOR
#----------------------------------------------------#
if [ -f $HOME/bin/dipole ]; then
if [ -f ${HOME}/bin/dipole ]; then
DIPOLE="Installed"
else
DIPOLE="Not Installed"
@ -581,7 +568,7 @@ fi
#----------------------------------------------------#
# SHOWLOG | Log file viewer
#----------------------------------------------------#
if [ -f $HOME/bin/showlog ]; then
if [ -f ${HOME}/bin/showlog ]; then
SHOWLOG="Installed"
else
SHOWLOG="Not Installed"
@ -590,7 +577,7 @@ fi
#----------------------------------------------------#
# Call Sign Lookup GETCALL
#----------------------------------------------------#
if [ -f $HOME/bin/getcall ]; then
if [ -f ${HOME}/bin/getcall ]; then
CALLSIGN="Installed"
else
CALLSIGN="Not Installed"
@ -647,12 +634,11 @@ else
XLOGCUR=$(xlog -version | sed 's/xlog\ version\ //')
XLOGLATEST=$(curl -s https://download.savannah.nongnu.org/releases/xlog/ | \
grep 2.[0-9].[0-9][0-9].tar | sort | tail -1 | sed 's/.*xlog/xlog/' | sed 's/.sig.*$//' | \
XLOGLATEST=$(curl -s https://download.savannah.nongnu.org/releases/xlog/ |
grep "2.[0-9].[0-9][0-9].tar" | sort | tail -1 | sed 's/.*xlog/xlog/' | sed 's/.sig.*$//' |
sed 's/xlog-//' | sed 's/.tar.gz//')
if (( $(echo "$XLOGLATEST $XLOGCUR" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${XLOGLATEST} ${XLOGCUR}" | awk '{print ($1 > $2)}'))); then
XLOG="NEEDS-UPDATE"
else
XLOG=is_latest_version
@ -700,7 +686,7 @@ fi
#----------------------------------------------------#
# YGATE
#----------------------------------------------------#
YGATE="$HOME/bin/ygate.py"
YGATE="${HOME}/bin/ygate.py"
if [ ! -f "$YGATE" ]; then
YGATE="Not Installed"
else
@ -710,7 +696,7 @@ fi
#----------------------------------------------------#
# BPQ
#----------------------------------------------------#
BPQ="$HOME/linbpq/linbpq"
BPQ="${HOME}/linbpq/linbpq"
if [ ! -f "$BPQ" ]; then
BPQ="Not Installed"
else
@ -720,7 +706,7 @@ fi
#----------------------------------------------------#
# Battery Test Script :: BATT
#----------------------------------------------------#
BATT="$HOME/bin/batt-test"
BATT="${HOME}/bin/batt-test"
if [ ! -f "$BATT" ]; then
BATT="Not Installed"
else
@ -749,13 +735,12 @@ fi
# GPS UPDATE TOOL
#----------------------------------------------------#
echo "Checking GPS Update Tool"
if [ ! -f $HOME/bin/gpsupdate ]; then
if [ ! -f ${HOME}/bin/gpsupdate ]; then
GPSUPDATE="Not_Installed"
else
GPSUPDATE=$(grep VERSION= $HOME/bin/gpsupdate | sed 's/VERSION=//')
GPSUPDATE=$(grep VERSION= ${HOME}/bin/gpsupdate | sed 's/VERSION=//')
NEWGPSUPDATE=$(curl -s https://raw.githubusercontent.com/km4ack/pi-scripts/master/gpsupdate | grep VERSION= | sed 's/VERSION=//')
if (( $(echo "$NEWGPSUPDATE $GPSUPDATE" | awk '{print ($1 > $2)}') ))
then
if (($(echo "${NEWGPSUPDATE} ${GPSUPDATE}" | awk '{print ($1 > $2)}'))); then
GPSUPDATE=NEEDS-UPDATE
else
GPSUPDATE="is_latest_version"
@ -777,15 +762,15 @@ CHECK
# Get User Call
#####################################
CALL() {
source $MYPATH/config
source ${MYPATH}/config
INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--text="<b>version $VERSION</b>" \
--field="Call Sign*" "$CALL" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="<b>version ${VERSION}</b>" \
--field="Call Sign*" "${CALL}" \
--field="<b>* Required</b>":LBL \
--button="Continue":2)
BUT=$?
if [ $BUT = 252 ]; then
if [ ${BUT} = 252 ]; then
exit
fi
}
@ -793,45 +778,44 @@ CALL
CALL=$(echo $INFO | awk -F "|" '{print $1}')
CALL=${CALL^^}
echo "CALL=$CALL" > $CONFIG
echo "CALL=${CALL}" >${CONFIG}
#Verify call not empty
if [ -z "$CALL" ]; then
if [ -z "${CALL}" ]; then
yad --form --width=420 --text-align=center --center --title="Build-a-Pi" --text-align=center \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="<b>Call Can't be Blank</b>" \
--button=gtk-ok
CALL
fi
#----------------------------------------------------#
# BASE APP MENU
#----------------------------------------------------#
yad --center --list --checklist --width=600 --height=600 --separator="" \
--image $LOGO --column=Check --column=App --column=status --column=description --print-column=2 \
--window-icon=$LOGO --image-on-top --text-align=center \
--image ${LOGO} --column=Check --column=App --column=status --column=description --print-column=2 \
--window-icon=${LOGO} --image-on-top --text-align=center \
--text="<big><big><b>Base Apps</b></big></big>" --title="Update" \
false "HAMLIB" "$RIG" "Rig Control" \
false "HOTSPOT" "$HOTSPOT" "Hot Spot Generator for Portable Ops" \
false "HSTOOLS" "$HSTOOLS" "Tools to Manage HotSpot" \
false "GPS" "$GPS" "GPS Software" \
false "GPS" "${GPS}" "GPS Software" \
false "ARDOP" "$ARDOP" "Mode for HF" \
false "ARDOPGUI" "$ARDOPGUI" "GUI for ARDOP" \
false "DIREWOLF" "$DIRE" "Software TNC" \
false "AX25" "$AX25" "Data Link Layer Protocol" \
false "PULSE" "$PULSE" "Sound server" \
--button="Exit":1 \
--button="Next":2 > $BASE
--button="Next":2 >${BASE}
BUT=$?
if [ $BUT = 1 ] || [ $BUT = 252 ];then
if [ ${BUT} = 1 ] || [ ${BUT} = 252 ]; then
exit
fi
#############################################################
#check if hotspot is chosen for install & get info if needed#
#############################################################
HS=$(cat $BASE | grep HOTSPOT)
HS=$(cat ${BASE} | grep HOTSPOT)
if [ -n "$HS" ]; then
HSINFO() {
#unblock wifi
@ -844,13 +828,13 @@ sudo ifconfig wlan0 up
LIST=$(sudo iw dev "wlan0" scan ap-force | sed -ne 's/^.*SSID: \(..*\)/\1/p' | sort | uniq | paste -sd '|')
HSINFO=$(yad --center --form --width=400 --height=400 --separator="|" --item-separator="|" \
--image $LOGO --column=Check --column=App --column=Description \
--window-icon=$LOGO --image-on-top --text-align=center \
--image ${LOGO} --column=Check --column=App --column=Description \
--window-icon=${LOGO} --image-on-top --text-align=center \
--text="<b>HotSpot Information\r\rPlease enter the information\rbelow \
for the Hot Spot\r</b>NOTE: The last field is the password for the hotspot. You will use this password to \
connect to your Pi when it is in hotspot mode <b>This password can only contain letters and numbers</b>" \
--title="Build-a-Pi" \
--field="Home Wifi SSID":CB "$LIST" \
--field="Home Wifi SSID":CB "${LIST}" \
--field="Home Wifi Password" \
--field="Hot Spot Password" \
--button="Exit":1 \
@ -859,16 +843,15 @@ connect to your Pi when it is in hotspot mode <b>This password can only contain
#} THIS IS WHERE ORIGINAL FUNCTION STOPPED################
#HSINFO SEE COMMENT PREVIOUS LINE
BUT=$?
if [ $BUT = 3 ];then
if [ ${BUT} = 3 ]; then
HSINFO #Call HSINFO function
fi
if [ $BUT = 252 ] || [ $BUT = 1 ]; then
if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then
exit
fi
} #THIS IS NEW FUNCTION END FOR TESTING####################
HSINFO
fi
SHACKSSID=$(echo $HSINFO | awk -F "|" '{print $1}')
@ -878,36 +861,34 @@ HSPASS=$(echo $HSINFO | awk -F "|" '{print $3}')
#Check password length
if [ -n "$HS" ]; then
COUNT=${#HSPASS}
if [ $COUNT -lt 8 ]
then
if [ $COUNT -lt 8 ]; then
yad --center --form --width=300 --height=200 --separator="|" \
--image $LOGO --column=Check --column=App --column=Description \
--window-icon=$LOGO --image-on-top --text-align=center \
--image ${LOGO} --column=Check --column=App --column=Description \
--window-icon=${LOGO} --image-on-top --text-align=center \
--text="<b>Hotspot password has to be 8-63 characters</b>" --title="Build-a-Pi" \
--button=gtk-ok
HSINFO
fi
fi
echo "SHACKSSID=$SHACKSSID" >> $CONFIG
echo "SHACKPASS=$SHACKPASS" >> $CONFIG
echo "HSPASS=$HSPASS" >> $CONFIG
echo "SHACKSSID=${SHACKSSID}" >>${CONFIG}
echo "SHACKPASS=${SHACKPASS}" >>${CONFIG}
echo "HSPASS=${HSPASS}" >>${CONFIG}
###################################
#CHECK IF GPS IS CHOSEN TO INSTALL#
###################################
GPSINSTALL=$(cat $BASE | grep GPS)
if [ -n "$GPSINSTALL" ]; then
GPSINSTALL=$(cat ${BASE} | grep GPS)
if [ -n "${GPS}INSTALL" ]; then
yad --center --height="300" --width="300" --form --separator="|" --item-separator="|" --title="GPS" \
--image $LOGO --window-icon=$LOGO --image-on-top \
--image ${LOGO} --window-icon=${LOGO} --image-on-top \
--text="\r\r\r\r\r<b><big>Connect your GPS to the pi</big></b>" \
--button="Exit":1 \
--button="Continue":2
BUT=$?
if [ $BUT = 1 ] || [ $BUT = 252 ]; then
if [ ${BUT} = 1 ] || [ ${BUT} = 252 ]; then
exit
fi
@ -915,45 +896,45 @@ USB=$(ls /dev/serial/by-id)
USB=$(echo $USB | sed "s/\s/|/g")
GPS=$(yad --center --height="600" --width="300" --form --separator="|" --item-separator="|" --title="GPS" \
--image $LOGO --window-icon=$LOGO --image-on-top \
--image ${LOGO} --window-icon=${LOGO} --image-on-top \
--text="Choose Your GPS" \
--field="GPS":CB "$USB")
BUT=$?
if [ $BUT = 252 ] || [ $BUT = 1 ]; then
if [ ${BUT} = 252 ] || [ ${BUT} = 1 ]; then
echo exiting
exit
fi
GPS=$(echo $GPS | awk -F "|" '{print $1}')
GPS=/dev/serial/by-id/$GPS
echo "GPS=$GPS" >> $CONFIG
GPS=$(echo ${GPS} | awk -F "|" '{print $1}')
GPS=/dev/serial/by-id/${GPS}
echo "GPS=${GPS}" >>${CONFIG}
fi
#----------------------------------------------------#
# FLSUITE APP MENU
#----------------------------------------------------#
yad --center --list --checklist --width=600 --height=600 --separator="" \
--image $LOGO --column=Check --column=App --column=status --column=description --print-column=2 \
--window-icon=$LOGO --image-on-top --text-align=center \
--image ${LOGO} --column=Check --column=App --column=status --column=description --print-column=2 \
--window-icon=${LOGO} --image-on-top --text-align=center \
--text="<big><big><b>FLDIGI Suite</b></big></big>" --title="Update" \
false "FLRIG" "$FLRIG" "Rig Control GUI" \
false "FLDIGI" "$FLDIGI" "Digital Software" \
false "FLAMP" "$FLAMP" "File Transfer Program" \
false "FLNET" "$FLNET" "Net Control Software" \
false "FLMSG" "$FLMSG" "Form Manager" \
false "FLWRAP" "$FLWRAP" "File Encapsulation" \
false "FLRIG" "${FLRIG}" "Rig Control GUI" \
false "FLDIGI" "${FLDIGI}" "Digital Software" \
false "FLAMP" "${FLAMP}" "File Transfer Program" \
false "FLNET" "${FLNET}" "Net Control Software" \
false "FLMSG" "${FLMSG}" "Form Manager" \
false "FLWRAP" "${FLWRAP}" "File Encapsulation" \
--button="Exit":1 \
--button="Next":2 > $FLSUITE
--button="Next":2 >${FLSUITE}
BUT=$?
if [ $BUT = 1 ] || [ $BUT = 252 ];then
if [ ${BUT} = 1 ] || [ ${BUT} = 252 ]; then
exit
fi
#----------------------------------------------------#
# HAM APP MENU
#----------------------------------------------------#
yad --center --list --checklist --width=600 --height=600 --separator="" \
--image $LOGO --column=Check --column=App --column=status --column=description --print-column=2 \
--window-icon=$LOGO --image-on-top --text-align=center \
--image ${LOGO} --column=Check --column=App --column=status --column=description --print-column=2 \
--window-icon=${LOGO} --image-on-top --text-align=center \
--text="<big><big><b>HAM Apps</b></big></big>" --title="Update" \
false "PAT" "$PAT" "Radio Email Application" \
false "PAT-MENU" "$PATMENU" "Control for Pat Winlink" \
@ -977,30 +958,30 @@ false "EES" "$EES" "KM4ACK Emergency Email Server" \
false "GPREDICT" "$GPREDICT" "Satellite Tracking" \
false "TQSL" "$TQSL" "LOTW Software" \
--button="Exit":1 \
--button="Next":2 > $ADDITIONAL
--button="Next":2 >${ADDITIONAL}
BUT=$?
if [ $BUT = 1 ] || [ $BUT = 252 ];then
if [ ${BUT} = 1 ] || [ ${BUT} = 252 ]; then
exit
fi
#check if hamclock is being installed
HCCHECK=$(cat $ADDITIONAL | grep HAMCLOCK)
HCCHECK=$(cat ${ADDITIONAL} | grep HAMCLOCK)
if [ -n "$HCCHECK" ]; then
HC=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="<b>version $VERSION</b>" \
--field="Ham Clock Size":CB "SMALL|LARGE" \
--button="Continue":2)
HC=$(echo $HC | awk -F "|" '{print $1}')
sed -i 's/HAMCLOCK//' $ADDITIONAL
echo $HC >> $ADDITIONAL
sed -i 's/HAMCLOCK//' ${ADDITIONAL}
echo $HC >>${ADDITIONAL}
fi
PATCHECK=$(cat $ADDITIONAL | grep PAT)
PATCHECK=$(cat ${ADDITIONAL} | grep PAT)
if [ -n "$PATCHECK" ]; then
INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi" \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="<b>version $VERSION</b>" \
--field="Six Character Grid Square" "$GRID" \
--field="Winlink Password" \
@ -1009,8 +990,8 @@ INFO=$(yad --form --width=420 --text-align=center --center --title="Build-a-Pi"
GRID=$(echo $INFO | awk -F "|" '{print $1}')
GRID=${GRID^^}
WL2KPASS=$(echo $INFO | awk -F "|" '{print $2}')
echo "GRID=$GRID" >> $CONFIG
echo "WL2KPASS=\"$WL2KPASS\"" >> $CONFIG
echo "GRID=$GRID" >>${CONFIG}
echo "WL2KPASS=\"$WL2KPASS\"" >>${CONFIG}
fi
@ -1018,11 +999,11 @@ fi
# UTILITIES MENU
#----------------------------------------------------#
yad --center --list --checklist --width=600 --height=600 --separator="" \
--image $LOGO --column=Check --column=App --column=status --column=description --print-column=2 \
--window-icon=$LOGO --image-on-top --text-align=center \
--image ${LOGO} --column=Check --column=App --column=status --column=description --print-column=2 \
--window-icon=${LOGO} --image-on-top --text-align=center \
--text="<big><big><b>UTILITIES</b></big></big>" --title="Update" \
false "DIPOLE" "$DIPOLE" "Dipole Calculator" \
false "CALLSIGN" "$CALLSIGN" "Call Sign Lookup Utility" \
false "CALLSIGN" "${CALL}SIGN" "Call Sign Lookup Utility" \
false "TEMPCONVERT" "$TEMPCONVERT" "Temperature Converter" \
false "GPARTED" "$GPARTED" "Disk Utility Application" \
false "RTC" "$RTC" "Real Time Clock" \
@ -1036,35 +1017,31 @@ false "BPQ" "$BPQ" "LinBPQ Software" \
false "BATT" "$BATT" "Battery Test Script" \
false "VNC" "$VNC" "VNC Viewer Application" \
false "ZYGRIB" "$ZYGRIB" "Grib File Viewer" \
false "GPSUPDATE" "$GPSUPDATE" "Tool to Manage GPS Devices" \
false "GPSUPDATE" "${GPS}UPDATE" "Tool to Manage GPS Devices" \
--button="Exit":1 \
--button="Install/Update Selected":2 > $UTILITY
--button="Install/Update Selected":2 >${UTILITY}
BUT=$?
if [ $BUT = 1 ] || [ $BUT = 252 ];then
if [ ${BUT} = 1 ] || [ ${BUT} = 252 ]; then
exit
fi
#check and exit if nothing selected
CKBASE=$(cat $BASE)
CKFL=$(cat $FLSUITE)
CKADD=$(cat $ADDITIONAL)
CKUTIL=$(cat $UTILITY)
CKBASE=$(cat ${BASE})
CKFL=$(cat ${FLSUITE})
CKADD=$(cat ${ADDITIONAL})
CKUTIL=$(cat ${UTILITY})
if [ -z "$CKBASE" ] && [ -z "$CKFL" ] && [ -z "$CKADD" ] && [ -z "$CKUTIL" ]; then
rm $BASE $FLSUITE $ADDITIONAL $UTILITY > /dev/null 2>&1
rm ${BASE} ${FLSUITE} ${ADDITIONAL} ${UTILITY} >/dev/null 2>&1
yad --width=550 --height=250 --text-align=center --center --title="Update" \
--image $LOGO --window-icon=$LOGO --image-on-top --separator="|" --item-separator="|" \
--image ${LOGO} --window-icon=${LOGO} --image-on-top --separator="|" --item-separator="|" \
--text="\r\r\r\r<b>Nothing selected for install/update</b>" \
--button="CLOSE":1
exit
fi
#backup crontab
crontab -l > $TEMPCRON
echo "@reboot sleep 10 && export DISPLAY=:0 && $MYPATH/.complete" >> $TEMPCRON
crontab -l >${TEMPCRON}
echo "@reboot sleep 10 && export DISPLAY=:0 && ${MYPATH}/.complete" >>${TEMPCRON}
#update/upgrade the system
sudo apt-get -y update
sudo apt-get -y upgrade
@ -1073,29 +1050,29 @@ sudo apt -y full-upgrade
#####################################
# Install Base Apps
#####################################
touch $HOME/.config/KM4ACK
touch ${HOME}/.config/KM4ACK
while read i; do
source $FUNCTIONS/base.function
source ${FUNCTIONS}/base.function
$i
done < $BASE
done <${BASE}
#####################################
# Install FLSUITE
#####################################
source $FUNCTIONS/flsuite.function
source ${FUNCTIONS}/flsuite.function
#perform memory increase if needed
CHECKFL=$(cat $MYPATH/flsuite.txt)
CHECKFL=$(cat ${MYPATH}/flsuite.txt)
if [ -n "$CHECKFL" ]; then
FLSTART
fi
touch $HOME/.config/KM4ACK
touch ${HOME}/.config/KM4ACK
while read i; do
source $FUNCTIONS/flsuite.function
source ${FUNCTIONS}/flsuite.function
$i
done < $FLSUITE
done <${FLSUITE}
source $FUNCTIONS/flsuite.function
source ${FUNCTIONS}/flsuite.function
if [ -n "$CHECKFL" ]; then
FLSTOP
fi
@ -1104,59 +1081,39 @@ fi
# Install ADDITIONAL Apps
#####################################
while read i; do
source $FUNCTIONS/additional.function
source ${FUNCTIONS}/additional.function
$i
done < $ADDITIONAL
done <${ADDITIONAL}
#####################################
# Install KM4ACK Utilites
#####################################
while read i; do
source $FUNCTIONS/utility.function
source ${FUNCTIONS}/utility.function
$i
done < $UTILITY
done <${UTILITY}
#####################################
# END CLEANUP
#####################################
#Remove temp files
rm $BASE $ADDITIONAL $UTILITY $FLSUITE > /dev/null 2>&1
rm ${BASE} ${ADDITIONAL} ${UTILITY} ${FLSUITE} >/dev/null 2>&1
#restore crontab
crontab $TEMPCRON
rm $TEMPCRON
crontab ${TEMPCRON}
rm ${TEMPCRON}
#reboot when done
yad --width=400 --height=200 --title="Reboot" --image $LOGO \
yad --width=400 --height=200 --title="Reboot" --image ${LOGO} \
--text-align=center --skip-taskbar --image-on-top \
--wrap --center --window-icon=$LOGO \
--wrap --center --window-icon=${LOGO} \
--undecorated --text="<big><big><big><b>Update Finished \rReboot Required</b></big></big></big>\r\r" \
--button="Reboot Now":0 \
--button="Exit":1
BUT=$(echo $?)
if [ $BUT = 0 ]; then
if [ ${BUT} = 0 ]; then
echo rebooting
sudo reboot
elif [ $BUT = 1 ]; then
elif [ ${BUT} = 1 ]; then
exit
fi