diskconnectbot/bot.sh

80 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
[ "${1}" = "stop" ] && {
kill -SIGTERM "$(cat /tmp/dskbot.pid)" 2>/dev/null
exit 0
}
printf "%s" "${$}" > /tmp/dskbot.pid
api_url="https://api.telegram.org/bot${TELEGRAM_DSK_TOKEN}/"
bot_tmpdir="/tmp/dskbot/"
[ -d "${bot_tmpdir}" ] || {
mkdir "${bot_tmpdir}" || {
printf "error: can't write to /tmp\n"
exit 2
}
}
files=( "updates.txt" "sentmsgs.txt" "error.log" "checked.txt" )
for i in "${files[@]}"; do
touch "${bot_tmpdir}${i}"
done
unset files
exec 2>>"${bot_tmpdir}/error.log"
. ./bashbot-lib/bashbot-lib.sh
. ./bashbot-lib/viewer.sh
#
#declare -a kbd_rows=( 2 )
#declare -a kbd_text=( "remount" "fix disk" )
#declare -a kbd_data=( "remount" "fixdisk" )
#inline_kbd=$(mkinline_kbd kbd_rows kbd_text kbd_data)
#unset kbd_rows
#unset kbd_text
#unset kbd_data
dsk_status(){
local BUF="$(dmesg | grep unmounting | tail -n1)"
local TIMECODE="$(awk '{print $1}' <<< "${BUF}")"
grep "${TIMECODE}" /tmp/dskbot/checked.txt >/dev/null 2>&1 || {
printf "%s\n" "${TIMECODE}" >> /tmp/dskbot/checked.txt
local TIME="$(date +'%a %d/%m - %T')"
local DISK="$(grep -o "sd[a-d][0-9]" <<< "${BUF}")"
[ ! -z "${DISK}" ] && {
local MOUNTED="$(mount | grep "${DISK}")"
[ -z "${MOUNTED}" ] && printf "%s is not mounted\n" "${DISK}" || {
local STATUS="$(grep -o "r[ow]" <<< "${MOUNTED}")"
case "${STATUS}" in
"ro") printf "%s is mounted read-only\n" "${DISK}";;
"rw") printf "%s is mounted read-write\n" "${DISK}";;
*) printf "%s is mounted as neither read-write nor read-only" "${DISK}";;
esac
}
}
}
}
while [ "${1}" = "start" ]; do
PANIC="$(dsk_status)"
[ ! -z "${PANIC}" ] && {
for i in $(awk '{print $1}' ./allowed_ids.txt); do
sendmsg "${i}" "${PANIC}" #"${inline_kbd}"
done
}
getupd >/dev/null || continue
declare -A curmsg
getmsg_content curmsg updates.txt
view_content curmsg
# [ "$curmsg[callback]" = "remount" ] && {
# for i in $(awk '{print $1}' ./allowed_ids.txt); do
# editmsg "curmsg[chat_id]" "curmsg[msg_id]" "remounting."
# editmsg "curmsg[chat_id]" "curmsg[msg_id]" "remounting.."
# editmsg "curmsg[chat_id]" "curmsg[msg_id]" "remounting..."
# getmsg_content curmsg sentmsgs.txt
# tput setaf 3; view_content curmsg; tput sgr0
# done
# }
unset curmsg PANIC
done