Add comments and standard headers for publication

This commit is contained in:
2017-06-03 02:50:32 -04:00
parent 3d3a7f0e96
commit 36fa70fecc
3 changed files with 186 additions and 101 deletions

221
bmc.sh
View File

@ -1,5 +1,23 @@
#!/bin/bash
#
# bmc.sh - BMC command shell
#
# This program works as the main user shell for the RPi BMC. It provides a
# command-line interface for interfacing with the running bmcd daemon
# program as well as a few distinct functions such as a serial console, as
# well as managing the BMC itself (e.g. BMC hostname, IP address, or host
# system name. It is designed to be started automatically on login to the
# BMC as the 'bmc' user, e.g. with the following passwd file entry:
# bmc:x:2000:2000:BMC:/home/dir:/path/to/bmc.sh
#
# Has dependencies on the 'bmcd' and 'screen' utilities.
#
# Part of the RPiBMC project - (c)2017 Joshua Boniface
# This software is licenced under the terms of the GNU GPL version 3. For
# details please see LICENSE
#
stty eof undef
stty intr undef
@ -79,7 +97,10 @@ readpower() {
fi
}
# Read the power state
readpower
# Print our login splash
echo
echo -e "--------------------"
echo -e "| Raspberry Pi BMC |"
@ -90,102 +111,108 @@ echo -e "Host state: ${powerstate}"
echo
help
echo
# Main loop
while true; do
stty eof undef
stty intr undef
echo -en "\e[1m\e[34m[$(hostname)]>\e[0m "
read input
case ${input} in
'state')
readpower
echo -e "Host state: ${powerstate}"
echo
;;
'console')
echo "Starting console..."
# Connect to screen, or start it
sudo screen -r serialconsole &>/dev/null || sudo screen -S serialconsole /dev/ttyUSB0 115200
# If the user killed screen, restart it - just in case
pgrep screen &>/dev/null || sudo screen -S serialconsole /dev/ttyUSB0 115200
echo
;;
'power')
powersw_press
readpower
echo -e "Host state: ${powerstate}"
echo
;;
'reset')
resetsw_press
echo
;;
'kill')
powersw_hold
readpower
echo -e "Host state: ${powerstate}"
echo
;;
'locate')
locate_on
echo
;;
'unlocate')
locate_off
echo
;;
'help')
help
echo
;;
'bmc')
bmcinfo
echo
;;
'hostname')
echo -n "Enter new hostname: "
read newhostname
sethostname ${newhostname}
echo
;;
'host')
echo -n "Enter new host system name: "
read newhost
sethost ${newhost}
echo -n "Update BMC hostname to '${newhost}-bmc'? (y/N) "
read updatehostnameyn
if [[ "${updatehostnameyn}" =~ "y" ]]; then
sethostname "${newhost}-bmc"
fi
;;
'password')
echo -n "Enter new BMC password: "
read -s password_1
echo
echo -n "Reenter new BMC password: "
read -s password_2
echo
if [ "${password_1}" == "${password_2}" ]; then
setpassword "${password_1}"
else
echo "Passwords to not match!"
fi
echo
;;
'shell')
stty sane
/bin/bash
help
echo
;;
'exit'|'logout')
exit 0
;;
'')
continue
;;
*)
echo "Invalid command."
echo
;;
esac
stty eof undef
stty intr undef
# Prompt
echo -en "\e[1m\e[34m[$(hostname)]>\e[0m "
# Read input
read input
# Process input
case ${input} in
'state')
readpower
echo -e "Host state: ${powerstate}"
echo
;;
'console')
echo "Starting console..."
# Connect to screen, or start it
sudo screen -r serialconsole &>/dev/null || sudo screen -S serialconsole /dev/ttyUSB0 115200
# If the user killed screen, restart it - just in case
pgrep screen &>/dev/null || sudo screen -S serialconsole /dev/ttyUSB0 115200
echo
;;
'power')
powersw_press
readpower
echo -e "Host state: ${powerstate}"
echo
;;
'reset')
resetsw_press
echo
;;
'kill')
powersw_hold
readpower
echo -e "Host state: ${powerstate}"
echo
;;
'locate')
locate_on
echo
;;
'unlocate')
locate_off
echo
;;
'help')
help
echo
;;
'bmc')
bmcinfo
echo
;;
'hostname')
echo -n "Enter new hostname: "
read newhostname
sethostname ${newhostname}
echo
;;
'host')
echo -n "Enter new host system name: "
read newhost
sethost ${newhost}
echo -n "Update BMC hostname to '${newhost}-bmc'? (y/N) "
read updatehostnameyn
if [[ "${updatehostnameyn}" =~ "y" ]]; then
sethostname "${newhost}-bmc"
fi
;;
'password')
echo -n "Enter new BMC password: "
read -s password_1
echo
echo -n "Reenter new BMC password: "
read -s password_2
echo
if [ "${password_1}" == "${password_2}" ]; then
setpassword "${password_1}"
else
echo "Passwords to not match!"
fi
echo
;;
'shell')
stty sane
/bin/bash
help
echo
;;
'exit'|'logout')
exit 0
;;
'')
continue
;;
*)
echo "Invalid command."
echo
;;
esac
done