WIP: Added timeout on read function #6

Draft
Ghost wants to merge 3 commits from timeout-read into master

View file

@ -63,6 +63,20 @@ get_now() {
date +"%Y-%m-%dT%H:%M:%S%z"
}
# timeout on read(), uses TMOUT env as timer
timedout_read() {
if [ -z "${TMOUT+x}" ] || [ "$TMOUT" = 0 ]; then
# maximum allowed by stty
export TMOUT=25
fi
user_input=$1
old_tty_settings=$(stty -g)
stty -icanon min 0 time ${TMOUT}0
Review

10:2: note: read without -r will mangle backslashes. [SC2162]

10:7: note: Double quote to prevent globbing and word splitting. [SC2086]

10:2: note: read without -r will mangle backslashes. [SC2162] 10:7: note: Double quote to prevent globbing and word splitting. [SC2086]
Review

Strange that it didn't erase the review automatically.

Strange that it didn't erase the review automatically.
read -r "$user_input"
stty "$old_tty_settings"
unset TMOUT
}
test -f /etc/evomaintenance.cf && . /etc/evomaintenance.cf
[ -n "${HOSTNAME}" ] || HOSTNAME=$(get_fqdn)
@ -123,7 +137,7 @@ fi
# get input from stdin
echo "> Please, enter details about your maintenance"
read TEXTE
timedout_read TEXTE
if [ "${TEXTE}" = "" ]; then
echo "no value..."
@ -145,7 +159,7 @@ echo ""
echo "${BLOB}"
echo ""
echo "> Press <Enter> to submit, or <Ctrl+c> to cancel."
read enter
timedout_read enter
# write log
echo "----------- $(get_now) ---------------" >> "${LOGFILE}"
@ -185,7 +199,16 @@ fi
SQL_TEXTE=`echo "${TEXTE}" | sed "s/'/''/g"`
PG_QUERY="INSERT INTO evomaint(hostname,userid,ipaddress,begin_date,end_date,details) VALUES ('${HOSTNAME}','${USER}','${IP}','${BEGIN_DATE}',now(),'${SQL_TEXTE}')"
echo "${PG_QUERY}" | psql ${PGDB} ${PGTABLE} -h ${PGHOST}
#echo "${PG_QUERY}" | psql ${PGDB} ${PGTABLE} -h ${PGHOST}
curl -H "Content-Type: application/json" -X POST http://172.28.128.3:8000 -d '{
"hostname": '${HOSTNAME}',
"userid": '${USER}',
"ipaddress": '${IP}',
"begin_date": '${BEGIN_DATE}',
"end_date": '$(now())',
"details": '${SQL_TEXTE}'
}'
# send mail
MAIL_TEXTE=$(echo "${TEXTE}" | sed -e "s@/@\\\\\/@g ; s@&@\\\\&@")