#!/bin/bash
function imagemaker {
echo "Your Device Identity is $(tput setaf 1)$(tput bold)$1$(tput sgr0)"
echo "Your Device IP Address after network boot will be: $(tput setaf 1)$(tput bold)$2$(tput sgr0)"
if [ ! -d /tftpboot/$1 ]
then
mkdir -p /tftpboot/$1
cd /tftpboot/$1
ln -s ../workingbootcode/* .
cp cmdline.txt cmdline.txt.default
rm -f cmdline.txt
cat cmdline.txt.default | sed s/westpac/$1/g > cmdline.txt
rm -f cmdline.txt.default
mkdir /nfs/$1
cd /nfs/$1
echo
echo "$(tput setaf 3)$(tput blink)Now Creating Image, Please wait...$(tput sgr0)"
cp -rp /nfs/westpac/* .
echo
echo "$(tput setaf 4)Image has been built on Server$(tput sgr0)"
sleep 2s
echo
echo "$(tput setaf 5)Image building succesfull - please shutdown the pi after logging back in to complete network boot setup!$(tput sgr0)"
echo "/nfs/$1 *(rw,sync,no_subtree_check,no_root_squash)" >> /etc/exports
exportfs -r
sleep 2s
else
echo
echo "$(tput setaf 1)$(tput blink)Image exists...qutting!$(tput sgr0)"
echo
sleep 2s
fi
exit 0
exit 0
}
function imageremove {
echo "Your Device Identity is $(tput setaf 1)$(tput bold)$1$(tput sgr0)"
if [ -d /tftpboot/$1 ]; then
echo
echo "$(tput setaf 1)$(tput blink)Image exists...Removing it!$(tput sgr0)"
exportfs -u *:/nfs/$1
sed -i /$1/d /etc/exports
rm -fr /tftpboot/$1
rm -fr /nfs/$1
exportfs -r
echo
echo "$(tput setaf 2)Image has been removed sucessfully...Bye!$(tput sgr0)"
echo
sleep 2s
else
echo
echo "$(tput setaf 1)$(tput blink)Image doesnt exists...Quitting!$(tput sgr0)"
sleep 2s
sed -i /$1/d /etc/exports
exportfs -r
echo
fi
exit 0
}
sn[0]=$(tail -1 /proc/cpuinfo | grep -o ".\{8\}$")
IP=$(hostname -I)
echo
echo "$(tput setaf 1)$(tput bold)Welcome to Pi Nework boot creator...$(tput sgr0)"
echo
CHECK=$(vcgencmd otp_dump | grep 17:)
if [[ "$CHECK" == "17:3020000a" ]]; then
echo "Boot mode fine :) ($CHECK)"
else
echo "!!! Boot mode failed, value: $CHECK"
fi
read -e -p "Enter the Remote TFTP server IP...: " serverip
echo
echo 'Please enter your choice: '
echo
options=("Create Image on Server and Reboot" "Just reboot" "Shutdown" "Remove Image from Server" "Check firmware" "Update Firmware to enable Network Boot" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Create Image on Server and Reboot")
echo
echo "You chose Option 1 ($(tput setaf 5)Please Wait - Loading you details to server$(tput sgr0))"
index=$(printf "%1s"$sn)
sshpass -p 'qwe' ssh -t -t -o StrictHostKeyChecking=no root@$serverip "`declare -f imagemaker`; imagemaker "$index" "$IP""
sudo reboot
break;;
"Just reboot")
echo
echo "You chose Option 2"
sudo reboot
break;;
"Shutdown")
echo
echo "You chose $REPLY which is $opt"
sudo shutdown now
break;;
"Remove Image from Server")
echo
index1=$(printf "%1s"$sn)
sshpass -p 'qwe' ssh -t -t -o StrictHostKeyChecking=no root@$serverip "`declare -f imageremove`; imageremove "$index1""
;;
"Check firmware")
echo
CHECK=$(vcgencmd otp_dump | grep 17:)
if [[ "$CHECK" == "17:3020000a" ]]; then
echo "Boot mode fine :) ($CHECK)"
else
echo "!!! Boot mode failed, value: $CHECK"
fi
;;
"Update Firmware to enable Network Boot")
echo
echo "You chose $REPLY which is $opt"
sudo apt-get install rpi-update && sudo rpi-update
;;
"Quit")
break
;;
*) echo "invalid option $REPLY";;
esac
done
function imagemaker {
echo "Your Device Identity is $(tput setaf 1)$(tput bold)$1$(tput sgr0)"
echo "Your Device IP Address after network boot will be: $(tput setaf 1)$(tput bold)$2$(tput sgr0)"
if [ ! -d /tftpboot/$1 ]
then
mkdir -p /tftpboot/$1
cd /tftpboot/$1
ln -s ../workingbootcode/* .
cp cmdline.txt cmdline.txt.default
rm -f cmdline.txt
cat cmdline.txt.default | sed s/westpac/$1/g > cmdline.txt
rm -f cmdline.txt.default
mkdir /nfs/$1
cd /nfs/$1
echo
echo "$(tput setaf 3)$(tput blink)Now Creating Image, Please wait...$(tput sgr0)"
cp -rp /nfs/westpac/* .
echo
echo "$(tput setaf 4)Image has been built on Server$(tput sgr0)"
sleep 2s
echo
echo "$(tput setaf 5)Image building succesfull - please shutdown the pi after logging back in to complete network boot setup!$(tput sgr0)"
echo "/nfs/$1 *(rw,sync,no_subtree_check,no_root_squash)" >> /etc/exports
exportfs -r
sleep 2s
else
echo
echo "$(tput setaf 1)$(tput blink)Image exists...qutting!$(tput sgr0)"
echo
sleep 2s
fi
exit 0
exit 0
}
function imageremove {
echo "Your Device Identity is $(tput setaf 1)$(tput bold)$1$(tput sgr0)"
if [ -d /tftpboot/$1 ]; then
echo
echo "$(tput setaf 1)$(tput blink)Image exists...Removing it!$(tput sgr0)"
exportfs -u *:/nfs/$1
sed -i /$1/d /etc/exports
rm -fr /tftpboot/$1
rm -fr /nfs/$1
exportfs -r
echo
echo "$(tput setaf 2)Image has been removed sucessfully...Bye!$(tput sgr0)"
echo
sleep 2s
else
echo
echo "$(tput setaf 1)$(tput blink)Image doesnt exists...Quitting!$(tput sgr0)"
sleep 2s
sed -i /$1/d /etc/exports
exportfs -r
echo
fi
exit 0
}
sn[0]=$(tail -1 /proc/cpuinfo | grep -o ".\{8\}$")
IP=$(hostname -I)
echo
echo "$(tput setaf 1)$(tput bold)Welcome to Pi Nework boot creator...$(tput sgr0)"
echo
CHECK=$(vcgencmd otp_dump | grep 17:)
if [[ "$CHECK" == "17:3020000a" ]]; then
echo "Boot mode fine :) ($CHECK)"
else
echo "!!! Boot mode failed, value: $CHECK"
fi
read -e -p "Enter the Remote TFTP server IP...: " serverip
echo
echo 'Please enter your choice: '
echo
options=("Create Image on Server and Reboot" "Just reboot" "Shutdown" "Remove Image from Server" "Check firmware" "Update Firmware to enable Network Boot" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Create Image on Server and Reboot")
echo
echo "You chose Option 1 ($(tput setaf 5)Please Wait - Loading you details to server$(tput sgr0))"
index=$(printf "%1s"$sn)
sshpass -p 'qwe' ssh -t -t -o StrictHostKeyChecking=no root@$serverip "`declare -f imagemaker`; imagemaker "$index" "$IP""
sudo reboot
break;;
"Just reboot")
echo
echo "You chose Option 2"
sudo reboot
break;;
"Shutdown")
echo
echo "You chose $REPLY which is $opt"
sudo shutdown now
break;;
"Remove Image from Server")
echo
index1=$(printf "%1s"$sn)
sshpass -p 'qwe' ssh -t -t -o StrictHostKeyChecking=no root@$serverip "`declare -f imageremove`; imageremove "$index1""
;;
"Check firmware")
echo
CHECK=$(vcgencmd otp_dump | grep 17:)
if [[ "$CHECK" == "17:3020000a" ]]; then
echo "Boot mode fine :) ($CHECK)"
else
echo "!!! Boot mode failed, value: $CHECK"
fi
;;
"Update Firmware to enable Network Boot")
echo
echo "You chose $REPLY which is $opt"
sudo apt-get install rpi-update && sudo rpi-update
;;
"Quit")
break
;;
*) echo "invalid option $REPLY";;
esac
done
No comments:
Post a Comment