#!/bin/bash -x
#Взято на
https://forum.ubuntu.ru/index.php?topic=92123.0##Переработано Salt d_salt@mail.ru
#ver.0.03
user=`whoami`
displaynum=$(who | awk "/$user/ { print \$5; exit }" | sed 's/[(

]//g')
export DISPLAY=":$displaynum"
pids=`pgrep -u $user gnome-session`
DBUS_SESSION_BUS_ADDR=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/$pids/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
export DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDR
export LANG=ru_RU.UTF-8
# Склоняем в соответствующем падеже слова "час" и "минута" # 2 раза

))
function check_date ()
{
CURR_HOUR=`date +%H`
CURR_MIN=`date +%M`
TEMP_HOUR="`echo $CURR_HOUR | colrm 1 1`"
TEMP_MIN="`echo $CURR_MIN | colrm 1 1`"
if [ "$CURR_HOUR" -eq "0" ] || [ "$CURR_HOUR" -eq "5" ] || [ "$CURR_HOUR" -eq "6" ] || [ "$CURR_HOUR" -eq "7" ] || [ "$CURR_HOUR" -eq "8" ] || [ "$CURR_HOUR" -eq "9" ] || [ "$CURR_HOUR" -eq "11" ] || [ "$CURR_HOUR" -eq "12" ] || [ "$CURR_HOUR" -eq "13" ] || [ "$CURR_HOUR" -eq "14" ] || [ "$TEMP_HOUR" -eq "0" ] || [ "$TEMP_HOUR" -eq "5" ] || [ "$TEMP_HOUR" -eq "6" ] || [ "$TEMP_HOUR" -eq "7" ] || [ "$TEMP_HOUR" -eq "8" ] || [ "$TEMP_HOUR" -eq "9" ]; then LC_HOUR="часов"
elif [ "$CURR_HOUR" -eq "2" ] || [ "$CURR_HOUR" -eq "3" ] || [ "$CURR_HOUR" -eq "4" ] || [ "$TEMP_HOUR" -eq "2" ] || [ "$TEMP_HOUR" -eq "3" ] || [ "$TEMP_HOUR" -eq "4" ]; then LC_HOUR="час+а"
elif [ "$CURR_HOUR" -eq "1" ] || [ "$TEMP_HOUR" -eq "1" ]; then LC_HOUR="час"
fi
if [ "$CURR_MIN" -eq "5" ] || [ "$CURR_MIN" -eq "6" ] || [ "$CURR_MIN" -eq "7" ] || [ "$CURR_MIN" -eq "8" ] || [ "$CURR_MIN" -eq "9" ] || [ "$CURR_MIN" -eq "11" ] || [ "$CURR_MIN" -eq "12" ] || [ "$CURR_MIN" -eq "13" ] || [ "$CURR_MIN" -eq "14" ] || [ "$TEMP_MIN" -eq "0" ] || [ "$TEMP_MIN" -eq "5" ] || [ "$TEMP_MIN" -eq "6" ] || [ "$TEMP_MIN" -eq "7" ] || [ "$TEMP_MIN" -eq "8" ] || [ "$TEMP_MIN" -eq "9" ]; then LC_MINUTE="минут"
elif [ "$CURR_MIN" -eq "3" ] || [ "$CURR_MIN" -eq "4" ] || [ "$TEMP_MIN" -eq "3" ] || [ "$TEMP_MIN" -eq "4" ]; then LC_MINUTE="минуты"
fi
if [ "$CURR_HOUR" -eq "0" ]; then CURR_HOUR="н+оль" #Исправляем произношения цифры 0
fi
if [ "$CURR_MIN" -eq "1" ]; then DATE_TIME="$CURR_HOUR $LC_HOUR однa минута"
elif [ "$CURR_MIN" -eq "11" ]; then DATE_TIME="$CURR_HOUR $LC_HOUR $CURR_MIN $LC_MINUTE"
elif [ "$TEMP_MIN" -eq "1" ]; then DATE_TIME="$CURR_HOUR $LC_HOUR $(echo $CURR_MIN-1|bc) одна минута"
elif [ "$CURR_MIN" -eq "2" ]; then DATE_TIME="$CURR_HOUR $LC_HOUR две минуты"
elif [ "$CURR_MIN" -eq "12" ]; then DATE_TIME="$CURR_HOUR $LC_HOUR $CURR_MIN $LC_MINUTE"
elif [ "$TEMP_MIN" -eq "2" ]; then DATE_TIME="$CURR_HOUR $LC_HOUR $(echo $CURR_MIN-2|bc) две минуты"
elif [ "$CURR_MIN" -eq "00" ]; then DATE_TIME="$CURR_HOUR $LC_HOUR ровно"
else DATE_TIME="$CURR_HOUR $LC_HOUR $CURR_MIN $LC_MINUTE"
fi
}
FILENAME_TMP="/tmp/alarmsolci1.txt" #Имя временного файла
# Получаем температуру в своем городе
wget -t 1 -q -O -
http://www.gismeteo.ru/city/daily/12698/>$FILENAME_TMP
CURR_TEMP="`cat $FILENAME_TMP | grep -m 1 '<div class="temp">' | sed -r 's/<div class="temp">(.[0-9]+).*/\1/g' | awk '{print $1}'`"
function temp_sign ()
{
if [ "`echo $CURR_TEMP | sed -r 's/(.)[0-9]+/\1/g'`" == "-" ]; then TEMP_SIGN="минус"
elif [ "`echo $CURR_TEMP | sed -r 's/(.)[0-9]+/\1/g'`" == "+" ]; then TEMP_SIGN="" #плюс
else TEMP_SIGN="" #такое возможно при 0-ле градусов
fi
}
temp_sign
CURR_DEGREE=""
CURR_DEGREE="`echo $CURR_TEMP | sed -r 's/.([0-9]+)/\1/g'`"
if [ "$CURR_DEGREE" = "<div" ]; then CURR_DEGREE="0" #такое происходит при 0-ле градусов
fi
#echo "CURR_TEMP="$CURR_TEMP #для отладки
#echo "CURR_DEGREE="$CURR_DEGREE №для отладки
# Склоняем в соответствующем падеже слово "градус"
TEMP_DEGREE="`echo $CURR_DEGREE | colrm 1 1`"
function check_padej ()
{
if [ "$CURR_DEGREE" -eq "0" ] || [ "$CURR_DEGREE" -eq "5" ] || [ "$CURR_DEGREE" -eq "6" ] || [ "$CURR_DEGREE" -eq "7" ] || [ "$CURR_DEGREE" -eq "8" ] || [ "$CURR_DEGREE" -eq "9" ] || [ "$CURR_DEGREE" -eq "11" ] || [ "$CURR_DEGREE" -eq "12" ] || [ "$CURR_DEGREE" -eq "13" ] || [ "$CURR_DEGREE" -eq "14" ] || [ "$TEMP_DEGREE" -eq "0" ] || [ "$TEMP_DEGREE" -eq "5" ] || [ "$TEMP_DEGREE" -eq "6" ] || [ "$TEMP_DEGREE" -eq "7" ] || [ "$TEMP_DEGREE" -eq "8" ] || [ "$TEMP_DEGREE" -eq "9" ]; then LC_DEGREE="$LC_DEGREEов"
elif [ "$CURR_DEGREE" -eq "2" ] || [ "$CURR_DEGREE" -eq "3" ] || [ "$CURR_DEGREE" -eq "4" ] || [ "$TEMP_DEGREE" -eq "2" ] || [ "$TEMP_DEGREE" -eq "3" ] || [ "$TEMP_DEGREE" -eq "4" ]; then LC_DEGREE="$LC_DEGREEа"
elif [ "$CURR_DEGREE" -eq "1" ] || [ "$TEMP_DEGREE" -eq "1" ]; then LC_DEGREE="$LC_DEGREE"
else LC_DEGREE="не известна"
fi
}
LC_DEGREE="градус"
check_padej
check_date
# Склоняем в соответствующем падеже число
CURR_DAY=`date +%d`
if [ "$CURR_DAY" -eq "1" ]; then LC_DAY="пер вае"
elif [ "$CURR_DAY" -eq "2" ]; then LC_DAY="второее"
elif [ "$CURR_DAY" -eq "3" ]; then LC_DAY="тр+етье"
elif [ "$CURR_DAY" -eq "4" ]; then LC_DAY="четвёртое"
elif [ "$CURR_DAY" -eq "5" ]; then LC_DAY="пятое"
elif [ "$CURR_DAY" -eq "6" ]; then LC_DAY="шестое"
elif [ "$CURR_DAY" -eq "7" ]; then LC_DAY="седьмое"
elif [ "$CURR_DAY" -eq "8" ]; then LC_DAY="восьмое"
elif [ "$CURR_DAY" -eq "9" ]; then LC_DAY="девятое"
elif [ "$CURR_DAY" -eq "10" ]; then LC_DAY="десятое"
elif [ "$CURR_DAY" -eq "11" ]; then LC_DAY="одиннадцатое"
elif [ "$CURR_DAY" -eq "12" ]; then LC_DAY="двен+адцатое"
elif [ "$CURR_DAY" -eq "13" ]; then LC_DAY="тринадцатое"
elif [ "$CURR_DAY" -eq "14" ]; then LC_DAY="четырнадцатое"
elif [ "$CURR_DAY" -eq "15" ]; then LC_DAY="пятнадцатое"
elif [ "$CURR_DAY" -eq "16" ]; then LC_DAY="шестнадцатое"
elif [ "$CURR_DAY" -eq "17" ]; then LC_DAY="семн+адцатое"
elif [ "$CURR_DAY" -eq "18" ]; then LC_DAY="восемнадцатое"
elif [ "$CURR_DAY" -eq "19" ]; then LC_DAY="девятнадцатое"
elif [ "$CURR_DAY" -eq "20" ]; then LC_DAY="двадцатое"
elif [ "$CURR_DAY" -eq "21" ]; then LC_DAY="двадцать первое"
elif [ "$CURR_DAY" -eq "22" ]; then LC_DAY="двадцать второее"
elif [ "$CURR_DAY" -eq "23" ]; then LC_DAY="двадцать третье"
elif [ "$CURR_DAY" -eq "24" ]; then LC_DAY="двадцать четвёртое"
elif [ "$CURR_DAY" -eq "25" ]; then LC_DAY="двадцать пятое"
elif [ "$CURR_DAY" -eq "26" ]; then LC_DAY="двадцать шестое"
elif [ "$CURR_DAY" -eq "27" ]; then LC_DAY="двадцать седьмое"
elif [ "$CURR_DAY" -eq "28" ]; then LC_DAY="двадцать восьмое"
elif [ "$CURR_DAY" -eq "29" ]; then LC_DAY="двадцать девятое"
elif [ "$CURR_DAY" -eq "30" ]; then LC_DAY="тридцатое"
elif [ "$CURR_DAY" -eq "31" ]; then LC_DAY="тридцать пер вае"
else LC_DAY="$CURR_DAY хозяин Дмитрий ещё не склонил сегодняшнее число"
fi
# Склоняем в соответствующем падеже месяц
CURR_MON=`date +%m`
if [ "$CURR_MON" -eq "1" ]; then LC_MON="января"
elif [ "$CURR_MON" -eq "2" ]; then LC_MON="февраля"
elif [ "$CURR_MON" -eq "3" ]; then LC_MON="марта"
elif [ "$CURR_MON" -eq "4" ]; then LC_MON="апреля"
elif [ "$CURR_MON" -eq "5" ]; then LC_MON="мая"
elif [ "$CURR_MON" -eq "6" ]; then LC_MON="июня"
elif [ "$CURR_MON" -eq "7" ]; then LC_MON="июля"
elif [ "$CURR_MON" -eq "8" ]; then LC_MON="августа"
elif [ "$CURR_MON" -eq "9" ]; then LC_MON="сен тября"
elif [ "$CURR_MON" -eq "10" ]; then LC_MON="октября"
elif [ "$CURR_MON" -eq "11" ]; then LC_MON="ноября"
elif [ "$CURR_MON" -eq "12" ]; then LC_MON="декабря"
else LC_MON="$CURR_MON хозяин Дмитрий ещё не склонил текущий месяц"
fi
CURR_SAY="Сейчас $DATE_TIME. Сегодня `date +%A`, $LC_DAY $LC_MON"
function check_sost ()
{
if echo $CURR_SOST|grep "[Мм]ало"; then
CURR_SAY="$CURR_SAY мало"
fi
if echo $CURR_SOST|grep "[Оо]блачно"; then
CURR_SAY="$CURR_SAY +облачно"
fi
if echo $CURR_SOST|grep "[Пп]асмурно" ; then
CURR_SAY="$CURR_SAY п+асмурно"
fi
if echo $CURR_SOST|grep "[Дд]ымка" ; then
CURR_SAY="$CURR_SAY дымка"
fi
if echo $CURR_SOST|grep "[Нн]ебольшой" ; then
CURR_SAY="$CURR_SAY небольшой"
fi
if echo $CURR_SOST|grep "[Сс]ильный" ; then
CURR_SAY="$CURR_SAY сильныйй"
fi
if echo $CURR_SOST|grep "[Дд]ождь" ; then
CURR_SAY="$CURR_SAY д+ождь"
fi
if echo $CURR_SOST|grep "[Мм]орось" ; then
CURR_SAY="$CURR_SAY морось"
fi
if echo $CURR_SOST|grep "[Яя]сно" ; then
CURR_SAY="$CURR_SAY ясно"
fi
if echo $CURR_SOST|grep "[Тт]уман" ; then
CURR_SAY="$CURR_SAY туман"
fi
if echo $CURR_SOST|grep "[Гг]роза" ; then
CURR_SAY="$CURR_SAY гроза"
fi
if echo $CURR_SOST|grep "[Сс]нег" ; then
CURR_SAY="$CURR_SAY снег"
fi
if echo $CURR_SOST|grep "[Гг]рад" ; then
CURR_SAY="$CURR_SAY град"
fi
}
function func_1 ()
{
temp_sign
CURR_DEGREE=""
CURR_DEGREE="`echo $CURR_TEMP | sed -r 's/.([0-9]+)/\1/g'`"
# Склоняем в соответствующем падеже слово "градус"
TEMP_DEGREE="`echo $CURR_DEGREE | colrm 1 1`"
LC_DEGREE="градус"
check_padej
}
if [ "$LC_DEGREE" != "не известна" ]; then
CURR_SAY="$CURR_SAY. Температура воздуха в Сольцах $TEMP_SIGN $CURR_DEGREE $LC_DEGREE"
#Получаем состояние в своем городе
# CURR_SOST="`cat $FILENAME_TMP | grep -m 1 '<dd>'|sed -e :a -e 's/<[^>]*>//g;/</N;//ba'`"
# check_sost
#Получаем давление в своем городе
# CURR_DAVL="`cat $FILENAME_TMP | grep -m 1 '<div class="wicon barp">'| sed -r 's/<div class="wicon barp">([0-9]+).*/\1/g'`"
# CURR_DEGREE="`echo $CURR_DAVL | sed -r 's/.([0-9]+)/\1/g'`"
# LC_DEGREE="миллиметр"
# check_padej
# CURR_SAY="$CURR_SAY атмосферное давление $CURR_DAVL $LC_DEGREE ртутного столба"
if [ `date +%H` -ge "09" -a `date +%H` -le "11" ]; then #Привязка ко времени. Если времени >=09 и <=11 часов
CURR_TEMP="`cat $FILENAME_TMP | grep -m 3 '<td class="temp">' | sed -r 's/<td class="temp">(.[0-9]+).*/\1/g' | tail -1 | awk '{print $1}'`"
func_1
CURR_SAY="$CURR_SAY. Днём ожид+ается $TEMP_SIGN $CURR_DEGREE $LC_DEGREE."
CURR_SOST="`cat $FILENAME_TMP | grep -m 3 '<td class="cltext">'|tail -1`"
elif [ `date +%H` -ge "12" -a `date +%H` -le "14" ]; then #Привязка ко времени. Если времени >=12 и <=14 часов
CURR_TEMP="`cat $FILENAME_TMP | grep -m 4 '<td class="temp">' | sed -r 's/<td class="temp">(.[0-9]+).*/\1/g' | tail -1 | awk '{print $1}'`"
func_1
CURR_SAY="$CURR_SAY. Вечером ожид+ается $TEMP_SIGN $CURR_DEGREE $LC_DEGREE."
CURR_SOST="`cat $FILENAME_TMP | grep -m 4 '<td class="cltext">'|tail -1`"
elif [ `date +%H` -ge "15" -a `date +%H` -le "17" ]; then #Привязка ко времени. Если времени >=15 и <=17 часов
CURR_TEMP="`cat $FILENAME_TMP | grep -m 5 '<td class="temp">' | sed -r 's/<td class="temp">(.[0-9]+).*/\1/g' | tail -1 | awk '{print $1}'`"
func_1
CURR_SAY="$CURR_SAY. Ночью ожид+ается $TEMP_SIGN $CURR_DEGREE $LC_DEGREE."
CURR_SOST="`cat $FILENAME_TMP | grep -m 5 '<td class="cltext">'|tail -1`"
# elif [ `date +%H` -ge "18" -a `date +%H` -le "23" ]; then #Привязка ко времени. Если времени >=18 и <=23 часов
# CURR_TEMP="`cat $FILENAME_TMP | grep -m 6 '<td class="temp">' | sed -r 's/<td class="temp">(.[0-9]+).*/\1/g' | tail -1 | awk '{print $1}'`"
# func_1
# CURR_SAY="$CURR_SAY. Завтра утром ожидается $TEMP_SIGN $CURR_DEGREE $LC_DEGREE."
# CURR_SOST="`cat $FILENAME_TMP | grep -m 6 '<td class="cltext">'|tail -1`"
# elif [ `date +%H` -ge "00" -a `date +%H` -le "08" ]; then #Привязка ко времени. Если времени >=00 и <=08 часов
elif [ `date +%H` -ge "18" -a `date +%H` -le "23" -o `date +%H` -ge "00" -a `date +%H` -le "08" ]; then #Привязка ко времени. Если времени >=18 и <=23 часов или (>=00 и <=08) часов
# else #Привязка ко времени. Если времени (>=18 и <=23) или (>=00 и <=08) часов
CURR_TEMP="`cat $FILENAME_TMP | grep -m 6 '<td class="temp">' | sed -r 's/<td class="temp">(.[0-9]+).*/\1/g' | tail -1 | awk '{print $1}'`"
func_1
CURR_SAY="$CURR_SAY. Утром ожидается $TEMP_SIGN $CURR_DEGREE $LC_DEGREE."
CURR_SOST="`cat $FILENAME_TMP | grep -m 6 '<td class="cltext">'|tail -1`"
fi
check_sost
fi
rm $FILENAME_TMP #Удаляем временный файл
# Salt Эта часть относится к техническим характерристикам компьютера и окружения
#CURR_DEGREE="`sensors|grep "CPU Temp"|awk '{print $3}'|sed 's/°C//'|sed 's/.0//'|sed 's/+//'`"
#TEMP_DEGREE="`echo $CURR_DEGREE | colrm 1 1`"
#check_padej
#CURR_SAY="$CURR_SAY Температура проц+ессора $CURR_DEGREE $LC_DEGREE"
#CURR_DEGREE="`sensors|grep "M/B Temp"|awk '{print $3}'|sed 's/°C//'|sed 's/.0//'|sed 's/+//'`"
#TEMP_DEGREE="`echo $CURR_DEGREE | colrm 1 1`"
#check_padej
##CURR_DEGREE=apcaccess |grep LINEV|awk '{print $3}' #Получаем напряжение сети
##CURR_DEGREE=($CURR_DEGREE+0.5)/1|bc
##echo "$CURR_DEGREE"
#CURR_SAY="$CURR_SAY Температура материнской платы $CURR_DEGREE $LC_DEGREE"
CURR_DEGREE="`sudo hddtemp /dev/sda |awk '{print $3}'|sed 's/°C//'`" #Получаем температуру винчестера
if [ "$CURR_DEGREE" -gt "35" ]; then
CURR_SAY="$CURR_SAY. Внимание проверьте температуру жёсткого диска эс дэ а."
fi
CURR_DEGREE="`sudo hddtemp /dev/sdb |awk '{print $3}'|sed 's/°C//'`" #Получаем температуру винчестера
if [ "$CURR_DEGREE" -gt "35" ]; then
CURR_SAY="$CURR_SAY. Внимание проверьте температуру жёсткого диска эс дэ бэ."
fi
# End Salt Эта часть относится к техническим характерристикам компьютера и окружения
echo "$CURR_SAY" | festival --tts --language russian #Проговариваем получившуюся фразу
exit 0