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

146
.funfacts
Wyświetl plik

@ -3,149 +3,121 @@
#20200515 km4ack #20200515 km4ack
MYPATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" 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 \
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 \
--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" 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 \ 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 \ --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" 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 \ 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 \ --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." 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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>" 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 \ 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 \ --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!!" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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." 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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 \ 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" 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 \ 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 \ --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" 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 \ 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 \ --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" 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 \ 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 \ --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" Enough about KM4ACK! Go grab a coffee or do something fun while your pi is built"

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

@ -13,8 +13,7 @@ shackwifi=$1
shackpass=$2 shackpass=$2
wifipasswd=$3 wifipasswd=$3
#escape all "&" incase used in HS password #escape all "&" incase used in HS password
wifipasswd=$(sed 's|&|\\&|g' <<< $wifipasswd) wifipasswd=$(sed 's|&|\\&|g' <<<${wifipasswd})
#unblock wifi #unblock wifi
#needed after buster 20200205 #needed after buster 20200205
@ -31,18 +30,18 @@ systemctl unmask hostapd
systemctl disable hostapd systemctl disable hostapd
systemctl disable dnsmasq systemctl disable dnsmasq
mkdir -p $HOME/temp mkdir -p ${HOME}/temp
cd $HOME/temp cd ${HOME}/temp || exit
wget http://www.raspberryconnect.com/images/Autohotspot/autohotspot-95-4/hostapd.txt wget http://www.raspberryconnect.com/images/Autohotspot/autohotspot-95-4/hostapd.txt
#set new hotspot passwd #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 #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 #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_CONF=""/DAEMON_CONF="\/etc\/hostapd\/hostapd.conf"/' /etc/default/hostapd
sed -i s'/DAEMON_OPTS=""/#DAEMON_OPTS=""/' /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 "source-directory /etc/network/interfaces.d" >>/etc/network/interfaces
echo "nohook wpa_supplicant" >>/etc/dhcpcd.conf echo "nohook wpa_supplicant" >>/etc/dhcpcd.conf
#setup ip forward #setup ip forward
sed 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf 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 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 #check if iw installed. install if not
iwcheck=$(dpkg --get-selections | grep -w "iw") iwcheck=$(dpkg --get-selections | grep -w "iw")
if [ -z "iw" ] if [ -z "iw" ]; then #THIS MIGHT NEED TO SOME LOOKING AT -- SEE SC2157
then
apt-get install iw apt-get install iw
fi fi
#install autohotspot script #install autohotspot script
cd $HOME/temp cd ${HOME}/temp || exit
wget http://www.raspberryconnect.com/images/autohotspotN/autohotspotn-95-4/autohotspotN.txt wget http://www.raspberryconnect.com/images/autohotspotN/autohotspotn-95-4/autohotspotN.txt
#mod ip address for our custom setup #mod ip address for our custom setup
sed -i 's/192.168.50.5/10.10.10.10/' autohotspotN.txt 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 #this installs the basic software for build-a-pi
#km4ack 20200513 #km4ack 20200513
TEMPCRON=$MYPATH/cron.tmp TEMPCRON=${MYPATH}/cron.tmp
DIR=$MYPATH/temp DIR=${MYPATH}/temp
mkdir -p $DIR mkdir -p ${DIR}
source $MYPATH/config source ${MYPATH}/config
################################ ################################
# HOTSPOT # HOTSPOT
################################ ################################
HOTSPOT() { HOTSPOT() {
HS="/usr/bin/autohotspotN" HS="/usr/bin/autohotspotN"
if [ ! -f "$HS" ]; then if [ ! -f "${HS}" ]; then
#pass variables with script because run as root #pass variables with script because run as root
sudo bash $MYPATH/functions/autohotspot "$SHACKSSID" "$SHACKPASS" "$HSPASS" sudo bash ${MYPATH}/functions/autohotspot "${SHACKSSID}" "${SHACKPASS}" "${HSPASS}"
echo "*/5 * * * * sudo /usr/bin/autohotspotN >/dev/null 2>&1" >> $TEMPCRON echo "*/5 * * * * sudo /usr/bin/autohotspotN >/dev/null 2>&1" >>${TEMPCRON}
else else
echo ################################ echo ################################
echo ################################ echo ################################
@ -33,22 +33,22 @@ fi
# HOTSPOT TOOLS # HOTSPOT TOOLS
################################ ################################
HSTOOLS() { HSTOOLS() {
if [ -d $HOME/hotspot-tools2 ]; then if [ -d ${HOME}/hotspot-tools2 ]; then
rm -rf $HOME/hotspot-tools2 rm -rf ${HOME}/hotspot-tools2
fi fi
git clone https://github.com/km4ack/hotspot-tools2.git $HOME/hotspot-tools2 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 sudo cp ${HOME}/hotspot-tools2/hstools.desktop /usr/share/applications/hotspot-tools.desktop
} }
################################ ################################
# GPS # GPS
################################ ################################
GPS() { GPS() {
cd $DIR cd ${DIR} || exit
wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/gpsinstall wget --tries 2 --connect-timeout=60 https://raw.githubusercontent.com/km4ack/pi-scripts/master/gpsinstall
chmod +x $DIR/gpsinstall chmod +x ${DIR}/gpsinstall
sudo $DIR/gpsinstall sudo ${DIR}/gpsinstall
rm $DIR/gpsinstall rm ${DIR}/gpsinstall
#Set GPS by serial ID #Set GPS by serial ID
#GPS Variable set by main script or update script #GPS Variable set by main script or update script
#and placed in config file #and placed in config file
@ -74,58 +74,58 @@ sudo mv xgps.desktop /usr/share/applications/
# ARDOP # ARDOP
################################ ################################
ARDOP() { ARDOP() {
mkdir -p $HOME/ardop mkdir -p ${HOME}/ardop
cd $HOME/ardop cd ${HOME}/ardop || exit
wget --tries 2 --connect-timeout=60 https://www.cantab.net/users/john.wiseman/Downloads/Beta/piardopc 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 # ARDOP GUI
################################ ################################
ARDOPGUI() { ARDOPGUI() {
mkdir -p $HOME/ardop mkdir -p ${HOME}/ardop
cd $HOME/ardop cd ${HOME}/ardop || exit
wget --tries 2 --connect-timeout=60 https://www.cantab.net/users/john.wiseman/Downloads/Beta/piARDOP_GUI 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 cat >ardopgui.desktop <<EOF
[Desktop Entry] [Desktop Entry]
Name=ARDOP GUI Name=ARDOP GUI
GenericName=ARDOP GUI GenericName=ARDOP GUI
Comment=Graphical User Interface for ARDOP modem Comment=Graphical User Interface for ARDOP modem
Exec=$HOME/ardop/piARDOP_GUI Exec=${HOME}/ardop/piARDOP_GUI
Terminal=false Terminal=false
Type=Application Type=Application
Categories=Network;HamRadio; Categories=Network;HamRadio;
EOF EOF
sudo mv ardopgui.desktop /usr/share/applications/ sudo mv ardopgui.desktop /usr/share/applications/
FILE=$HOME/.config/G8BPQ/ARDOP_GUI.conf FILE=${HOME}/.config/G8BPQ/ARDOP_GUI.conf
mkdir -p $HOME/.config/G8BPQ mkdir -p ${HOME}/.config/G8BPQ
touch $FILE touch ${FILE}
echo "[General]" >> $FILE echo "[General]" >>${FILE}
echo "Host=local" >> $FILE echo "Host=local" >>${FILE}
echo "Port=8515" >> $FILE echo "Port=8515" >>${FILE}
} }
################################ ################################
# HAMLIB # HAMLIB
################################ ################################
HAMLIB() { HAMLIB() {
cd $DIR cd ${DIR} || exit
NEWRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download | \ NEWRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download |
grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] | \ grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] |
head -n 1 | awk -F "/" '{print $7}') head -n 1 | awk -F "/" '{print $7}')
HAMLIBLINK=https://sourceforge.net/projects/hamlib/files/hamlib/$NEWRIG/hamlib-$NEWRIG.tar.gz HAMLIBLINK=https://sourceforge.net/projects/hamlib/files/hamlib/${NEWRIG}/hamlib-${NEWRIG}.tar.gz
cd $HOME/Downloads cd ${HOME}/Downloads || exit
echo "###################################" echo "###################################"
echo "# Installing Hamlib " echo "# Installing Hamlib "
echo "###################################" echo "###################################"
wget --tries 2 --connect-timeout=60 $HAMLIBLINK wget --tries 2 --connect-timeout=60 ${HAMLIBLINK}
tar -xzf hamlib-$NEWRIG.tar.gz tar -xzf hamlib-${NEWRIG}.tar.gz
rm hamlib-$NEWRIG.tar.gz rm hamlib-${NEWRIG}.tar.gz
cd hamlib-$NEWRIG cd hamlib-${NEWRIG} || exit
./configure ./configure
make make
sudo make install sudo make install
@ -136,19 +136,19 @@ sudo ldconfig
# DIREWOLF # DIREWOLF
################################ ################################
DIREWOLF() { DIREWOLF() {
cd $HOME cd ${HOME} || exit
git clone https://www.github.com/wb2osz/direwolf git clone https://www.github.com/wb2osz/direwolf
cd $HOME/direwolf cd ${HOME}/direwolf || exit
mkdir build && cd build (mkdir build && cd build) || exit
sudo apt-get install -y libasound2-dev cmake sudo apt-get install -y libasound2-dev cmake
cmake .. cmake ..
make -j 4 make -j 4
sudo make install sudo make install
make install-conf make install-conf
sed -i "s/N0CALL/$CALL/" "$HOME/direwolf.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 '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 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 rm -rf ${HOME}/direwolf
} }
################################ ################################
@ -156,7 +156,7 @@ rm -rf $HOME/direwolf
################################ ################################
AX25() { AX25() {
sudo apt-get install -y ax25-tools 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 sudo apt-get install -y ax25-apps
} }
@ -166,32 +166,3 @@ sudo apt-get install -y ax25-apps
PULSE() { PULSE() {
sudo apt-get install -y pavucontrol sudo apt-get install -y pavucontrol
} }

Wyświetl plik

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

Wyświetl plik

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

433
update
Wyświetl plik

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