Скрипт уровня сигнала. Добавить цикл из 5 попыток.

Автор bboymig, 08 сентября 2016, 10:50:33

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

vic5710

endru, я применял свой метод(см выше) и меня он устраивал.

bboymig

#16
Цитировать#!/bin/bash
echo > gsm.txt
temp="0";
i="0";
for i in {1..5}; do
if [ $i -lt 5 ]; then
echo -e "AT+CSQ\r\n" > /dev/ttyUSB0
tail -f /dev/ttyUSB0 >> gsm.txt &
mypid=`echo $!`
temp=`gawk '/^+CSQ/{print gensub(/,.*/,"","g",$2)*2-113;RC=-1;exit} END {exit RC+1}' gsm.txt || echo 0`
if [ "$temp" -ne "0" ]
then
echo $temp
kill $mypid
break #прерываем цикл
fi
if [ $i -eq 5 ]; then
echo $temp;
kill $mypid
break
fi
fi
done
Данный вариант работает без сбоев, но почему то zabbix пишет следующее:
ЦитироватьReceived value [/etc/zabbix/alertscripts/gsm.sh: line 2: gsm.txt: Отказано в доступе/etc/zabbix/alertscripts/gsm.sh: line 13: gsm.txt: Отказано в доступеgawk: fatal: cannot open file `gsm.txt' for reading (Нет такого файла или каталога)/etc/zabbix/alertscripts/gsm.sh: line 13: gsm.txt: Отказано в доступеgawk: fatal: cannot open file `gsm.txt' for reading (Нет такого файла или каталога)/etc/zabbix/alertscripts/gsm.sh: line 13: gsm.txt: Отказано в доступеgawk: fatal: cannot open file `gsm.txt' for reading (Нет такого файла или каталога)/etc/zabbix/alertscripts/gsm.sh: line 13: gsm.txt: Отказано в доступеgawk: fatal: cannot open file `gsm.txt' for reading (Нет такого файла или каталога)0/etc/zabbix/alertscripts/gsm.sh: line 8: kill: (11361) - Нет такого процесса] is not suitable for value type [Numeric (float)]


Цитироватьchmod -R 755 /etc/zabbix/
chown -R zabbix:zabbix /etc/zabbix

Цитировать
drwxr-xr-x 2 zabbix zabbix 4096 сен 12 15:13 alertscripts
-rwxrwxrwx 1 zabbix zabbix  541 сен 12 15:04 gsm.sh

Cообщение объединено 12 сентября 2016, 16:02:49

После добавления пути к папке все заработало.
Цитировать#!/bin/bash
cd /etc/zabbix/alertscripts/
echo > /etc/zabbix/alertscripts/gsm.txt
temp="0";
i="0";
for i in {1..5}; do
  if [ $i -lt 5 ]; then
   echo -e "AT+CSQ\r\n" > /dev/ttyUSB0
   tail -f /dev/ttyUSB0 >> /etc/zabbix/alertscripts/gsm.txt &
   mypid=`echo $!`
   temp=`gawk '/^+CSQ/{print gensub(/,.*/,"","g",$2)*2-113;RC=-1;exit} END {exit RC+1}' /etc/zabbix/alertscripts/gsm.txt || echo 0`
   if [ "$temp" -ne "0" ]
   then
   echo $temp
   kill $mypid
   break #прерываем цикл
   fi
  if [ $i -eq 5 ]; then
                   echo $temp;
                   kill $mypid
                   break
                   fi
  fi
done
Тему можно считать решенной. Спасибо всем за поддержку и терпение! Удачного рабочего дня!

vic5710

#17
как у вас все непросто

#!/bin/sh

tail -f /dev/ttyUSB0 > gsm.txt &
tailpid=$!
for i in 1 2 3 4 5
do
echo -e "AT+CSQ\r\n" > /dev/ttyUSB0
sleep 1 #?
temp=`gawk '/^+CSQ/{print gensub(/,.*/,"","g",$2)*2-113;RC=-1;exit} END {exit RC+1}' gsm.txt || echo 0`
[ "$temp"=="0" ] && continue || break
done
echo $temp
kill $tailpid


Cообщение объединено 13 сентября 2016, 15:34:45

ТС вроде на тему забил, но для знатоков - очень изящное решение с ЛОРа

#!/bin/sh
echo -e "AT+CSQ\r\n" > /dev/ttyUSB1
timeout 1 gawk '/^+CSQ/{print gensub(/,.*/,"","g",$2)*2-113; exit}' /dev/ttyUSB1

вот так писать надо!