mirror of
https://github.com/OpenSolo/OpenSolo.git
synced 2025-04-29 22:24:32 +02:00
199 lines
5.3 KiB
Plaintext
Executable File
199 lines
5.3 KiB
Plaintext
Executable File
# Intended to be sourced by other scripts
|
|
|
|
export SOLO_IP=10.1.1.10
|
|
export ARTOO_IP=10.1.1.1
|
|
|
|
SCP="scp -o StrictHostKeyChecking=no ${RSA_KEY}"
|
|
SSH="ssh -o StrictHostKeyChecking=no ${RSA_KEY}"
|
|
|
|
sl_init_environment() {
|
|
system=`uname -a | awk '{print $1}'`
|
|
if [ $system == "Darwin" ]; then
|
|
if [ ! -e /usr/local/bin/md5sum ] && [ ! -e /opt/local/bin/md5sum ]; then
|
|
echo "md5sum missing: please install md5sha1sum using macports or brew"
|
|
return 1
|
|
fi
|
|
export MD5SUM='md5sum --check'
|
|
else
|
|
export MD5SUM='md5sum --check --quiet'
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
# sl_start_update [ip] [filename] [message]
|
|
# print message, then start update of 'ip' with 'filename'
|
|
# sl_start_update [ip] [filename]
|
|
# print default message, then start update of 'ip' with 'filename'
|
|
# sl_start_update [ip] [filename] -
|
|
# silently start update of 'ip' with 'filename'
|
|
sl_start_update() {
|
|
${MD5SUM} ${2}.md5 > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
echo "ERROR checking md5 for ${2}.md5"
|
|
exit
|
|
fi
|
|
msg="updating ${1} with ${2}"
|
|
if [ "${3}_" != "_" ]; then
|
|
msg=${3}
|
|
fi
|
|
if [ "${msg}" != "-" ]; then
|
|
echo ${msg}
|
|
fi
|
|
ssh-keygen -R ${1} &> /dev/null
|
|
${SSH} root@${1} "rm -rf /log/updates" &> /dev/null
|
|
${SSH} root@${1} "mkdir -p /log/updates" &> /dev/null
|
|
${SSH} root@${1} "touch /log/updates/UPDATE" &> /dev/null
|
|
${SCP} ${2} root@${1}:/log/updates/
|
|
${SCP} ${2}.md5 root@${1}:/log/updates/
|
|
${SSH} root@${1} "shutdown -r now"
|
|
}
|
|
|
|
|
|
# sl_start_makegolden [ip] [message]
|
|
# print message, then start makegold on 'ip'
|
|
# sl_start_makegolden [ip]
|
|
# print default message, then start makegold on 'ip'
|
|
# sl_start_makegolden [ip] -
|
|
# silently start makegold on 'ip'
|
|
sl_start_makegolden() {
|
|
msg="makegold on ${1}"
|
|
if [ "${2}_" != "_" ]; then
|
|
msg=${2}
|
|
fi
|
|
if [ "${msg}" != "-" ]; then
|
|
echo ${msg}
|
|
fi
|
|
ssh-keygen -R ${1} &> /dev/null
|
|
${SCP} ./makeGolden.sh root@${1}: &> /dev/null
|
|
${SSH} root@${1} "chmod +x ./makeGolden.sh"
|
|
${SSH} root@${1} "./makeGolden.sh"
|
|
}
|
|
|
|
|
|
# sl_start_factory [ip] [message]
|
|
# print message, then start factory reset on 'ip'
|
|
# sl_start_factory [ip]
|
|
# print default message, then start factory reset on 'ip'
|
|
# sl_start_factory [ip] -
|
|
# silently start factory reset on 'ip'
|
|
sl_start_factory() {
|
|
msg="starting factory reset on ${1}"
|
|
if [ "${2}_" != "_" ]; then
|
|
msg=${2}
|
|
fi
|
|
if [ "${msg}" != "-" ]; then
|
|
echo ${msg}
|
|
fi
|
|
ssh-keygen -R ${1} &> /dev/null
|
|
${SSH} root@${1} "mkdir -p /log/updates" &> /dev/null
|
|
${SSH} root@${1} "touch /log/updates/FACTORYRESET" &> /dev/null
|
|
${SSH} root@${1} "shutdown -r now"
|
|
}
|
|
|
|
|
|
# sl_wait_target [ip] [message]
|
|
# print message, then dots until ip is pingable, then ok
|
|
# sl_wait_target [ip]
|
|
# print default message, then dots until ip is pingable, then ok
|
|
# sl_wait_target [ip] -
|
|
# silently wait until ip is pingable
|
|
sl_wait_target() {
|
|
msg="waiting for ${1}"
|
|
if [ "${2}_" != "_" ]; then
|
|
msg=${2}
|
|
fi
|
|
if [ "${msg}" != "-" ]; then
|
|
echo -n "${msg} ..."
|
|
fi
|
|
# wait for it to be pingable (network up)
|
|
while ! ping -c1 -W1 ${1} &> /dev/null; do
|
|
if [ "${msg}" != "-" ]; then echo -n "."; fi
|
|
done
|
|
# wait for it to be accepting ssh connections
|
|
while ! ${SSH} root@${1} "true" &> /dev/null; do
|
|
sleep 1
|
|
if [ "${msg}" != "-" ]; then echo -n "-"; fi
|
|
done
|
|
# wait for it to be in runlevel 3, 4, or 5
|
|
sl_get_runlevel ${1}
|
|
runlevel=$?
|
|
until [ "${runlevel}_" == "3_" ] || [ "${runlevel}_" == "4_" ] || [ "${runlevel}_" == "5_" ]; do
|
|
sleep 1
|
|
sl_get_runlevel ${1}
|
|
if [ "${msg}" != "-" ]; then echo -n "+"; fi
|
|
done
|
|
if [ "${msg}" != "-" ]; then echo " ok"; fi
|
|
}
|
|
|
|
|
|
# sl_get_runlevel [ip]
|
|
sl_get_runlevel() {
|
|
rl=`${SSH} root@${1} 'runlevel'`
|
|
for w in ${rl}; do
|
|
a=${w}
|
|
done
|
|
return ${a}
|
|
}
|
|
|
|
|
|
# sl_check_update_files [filename] ...
|
|
sl_check_update_files() {
|
|
result=0
|
|
if [ -z "${MD5SUM}" ]; then
|
|
echo "MD5SUM not set in environment"
|
|
result=1
|
|
fi
|
|
until [ -z "${1}" ]; do
|
|
if [ ! -f "${1}" ]; then
|
|
echo "${1} missing"
|
|
result=1
|
|
elif [ ! -f "${1}.md5" ]; then
|
|
echo "${1}.md5 missing"
|
|
result=1
|
|
elif [ ! -z "${MD5SUM}" ]; then
|
|
${MD5SUM} ${1}.md5 > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
echo "${1}.md5 incorrect"
|
|
result=1
|
|
fi
|
|
fi
|
|
shift
|
|
done
|
|
return ${result}
|
|
}
|
|
|
|
|
|
# sl_get_version [ip] [which]
|
|
sl_get_version() {
|
|
echo `${SSH} root@${1} "cat /${2} | head -n 1"`
|
|
}
|
|
|
|
|
|
# sl_clean_firmware [ip]
|
|
# forces loading firmware on next boot if the build's version is different
|
|
# from what is already loaded
|
|
sl_clean_firmware() {
|
|
ssh-keygen -R ${1} &> /dev/null
|
|
${SSH} root@${1} "rm -rf /mnt/rootfs.rw/firmware" &> /dev/null
|
|
}
|
|
|
|
|
|
# sl_start_update_pixhawk [ip] [filename] [message]
|
|
sl_start_update_pixhawk() {
|
|
msg="starting update of pixhawk to ${2} ... "
|
|
if [ "${3}_" != "_" ]; then
|
|
msg=${3}
|
|
fi
|
|
if [ "${msg}" != "-" ]; then
|
|
echo -n "${msg}"
|
|
fi
|
|
|
|
ssh-keygen -R ${1} &> /dev/null
|
|
${SCP} ${2} root@${1}:/firmware/ &> /dev/null
|
|
${SSH} root@${1} "shutdown -r now"
|
|
|
|
if [ "${msg}" != "-" ]; then
|
|
echo "ok"
|
|
fi
|
|
}
|