Ad Widget
Collapse
Скрипт уровня сигнала модема
Collapse
X
-
Задача решилась:
#!/bin/bash
for in in 1 2 3 4 5 #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}' /dev/ttyusb0 || echo 0`
if [ "$temp" -ne "0" ]
then
echo $temp
break #прерываем цикл
fi
doneComment
-
Хм... Теперь zabbix выдает ошибку.
Я думал, zabbix забирает значение тогда, когда выполнится скрипт.Timeout while executing a shell script.Comment
-
Действительно, не досмотрел с утра всю логику.
Параметр Timeout в конфиге сервера и агентов увеличьтеComment
-
Не работает все же данный скрипт как следует. И я не могу понять в чем причина. Сам модем работает. Здесь с командой Sleep игрался. И 2 ставил и 0.5. То выдает информацию, то нет.
И даже так делал:
Интересно, что этот вариант работает стабильнее других. И надо бы сделать на выходе, если не получили информацию, то выводим 0.#!/bin/bash
for in in 1 2 3 4 5 #5 циклов
do
echo -e "AT+CSQ\r\n" > /dev/ttyUSB0
sleep 0.2
echo -e "AT+CSQ\r\n" > /dev/ttyUSB0
sleep 0.2
echo -e "AT+CSQ\r\n" > /dev/ttyUSB0
sleep 1.0
echo -e "AT+CSQ\r\n" > /dev/ttyUSB0
temp=`gawk '/^+CSQ/{print gensub(/,.*/,"","g",$2)*2-113;RC=-1;exit} END {exit RC+1}' /dev/ttyUSB0 || echo 0`
if [ "$temp" -ne "0" ]
then
echo $temp
break #прерываем цикл
fi
done
Оптимально бы сделать проверку сразу при сборе информации. Есть ли данные на dev/ttyUSB0. Если есть, то забираем. Если нет, то повторяем команду echo -e "AT+CSQ\r\n" > /dev/ttyUSB0 .Last edited by bboymig; 09-09-2016, 14:24.Comment
-
Сделал немного по другому. Иногда по непонтным причинам при выполнении команды строчка:
зависала.temp=`gawk '/^+CSQ/{print gensub(/,.*/,"","g",$2)*2-113;RC=-1;exit} END {exit RC+1}' /dev/ttyUSB0 || echo 0`
Сделал так:
Сейчас проблем нет, и можно отследить, какое значение выдает модем. Скрипт данные отображает прекрасно, а вот по каким то причинам информация на zabbix не поступает.#!/bin/bash
echo > gsm.txt
while true
do
sleep 0.5
cat /dev/ttyUSB0 >> gsm.txt
done &
temp="0";
i="0";
for i in {1..3}; do
if [ $i -eq 3 ]; then
echo $temp;
break
fi
if [ $i -lt 3 ]; then
echo -e "AT+CSQ\r\n" > /dev/ttyUSB0
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
clear;
echo $temp
break #прерываем цикл
fi
fi
done
zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t GSM
GSM [t|-87]Last edited by bboymig; 11-09-2016, 08:19.Comment
-
Права
Переделали скрипт. Данный скрипт не глючит и хорошо работает, но
Zabbix выдает следующее:#!/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
Права на папку есть.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)]
drwxr-xr-x 2 zabbix zabbix 4096 сен 12 15:13 alertscripts
-rwxrwxrwx 1 zabbix zabbix 541 сен 12 15:04 gsm.shLast edited by bboymig; 12-09-2016, 13:18.Comment
-
У Вас в скрипте не указаны пути к файлу gsm.txt, поэтому он будет создаваться в текущей директории для программы. В свою очередь, Вы не знаете, какая именно директория является текущей (совсем не обязательно, что та, где находится сам скрипт).
Тут надо либо указывать полный путь к временному файлу (скажем, /tmp/gsm.txt), либо делать явно нужную директорию текущей в самом скрипте (cd /tmp одной из первых строк, ещё до "echo > gsm.txt").Comment
-
pwd
/etc/zabbix/alertscriptsls -la
drwxrwxrwx 2 zabbix zabbix 4096 сен 12 16:50 .
drwxrwxrwx 5 zabbix zabbix 4096 сен 10 14:07 ..
-rwxrwxrwx 1 zabbix zabbix 350 июл 25 16:45 email.sh
-rwxrwxrwx 1 zabbix zabbix 645 сен 12 16:50 gsm.sh
-rwxrwxrwx 1 zabbix zabbix 364 июл 25 13:55 sendemail.sh
-rwxrwxrwx 1 zabbix zabbix 124 авг 15 08:39 sms.sh
-rwxrwxrwx 1 zabbix zabbix 1229 сен 7 10:33 upsd.crt
-rwxrwxrwx 1 zabbix zabbix 1704 сен 7 10:33 upsd.key
-rwxrwxrwx 1 zabbix zabbix 61 сен 6 15:54 UPSEN.sh
-rwxrwxrwx 1 zabbix zabbix 1338 сен 7 09:47 ups_status.sh
-rwxrwxrwx 1 zabbix zabbix 707 авг 15 10:54 ussd.shОшибка#!/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
Received value [/etc/zabbix/alertscripts/gsm.sh: line 2: gsm.txt: Отказано в доступе/etc/zabbix/alertscripts/gsm.sh: line 8: gsm.txt: Отказано в доступеgawk: fatal: cannot open file `gsm.txt' for reading (Нет такого файла или каталога)/etc/zabbix/alertscripts/gsm.sh: line 8: gsm.txt: Отказано в доступеgawk: fatal: cannot open file `gsm.txt' for reading (Нет такого файла или каталога)/etc/zabbix/alertscripts/gsm.sh: line 8: gsm.txt: Отказано в доступеgawk: fatal: cannot open file `gsm.txt' for reading (Нет такого файла или каталога)/etc/zabbix/alertscripts/gsm.sh: line 8: gsm.txt: Отказано в доступеgawk: fatal: cannot open file `gsm.txt' for reading (Нет такого файла или каталога)] is not suitable for value type [Numeric (float)]Comment
Comment