Страница 2 из 4

Re: AGI: write() returned error: Broken pipe

Добавлено: 14 май 2016, 15:47
Glukinho
Я обычно в таких случаях запускаю агишку просто из консоли, без астера (только лучше от пользователя, под которым астер запущен), и смотрю, чего она просит в STDIN и чего выдает в STDOUT, и когда.

Re: AGI: write() returned error: Broken pipe

Добавлено: 14 май 2016, 16:50
Wapo
Там речь идет об OpenWrt - это уж из другой оперы.

Я, обычно, игнорирую данную ошибку - переменные отправлены/переменные получены - ну и ОК.

Re: AGI: write() returned error: Broken pipe

Добавлено: 14 май 2016, 16:51
Glukinho
Ну а чего из другой, иди в консоль да запускай скрипт, не вижу проблемы)

Re: AGI: write() returned error: Broken pipe

Добавлено: 14 май 2016, 18:49
booBot
В консоли я отлаживал этот сценарий, всё выглядит (на мой взгляд) нормально.

Попробовал перенаправить stderr в stdout:

Код: Выделить всё

#!/bin/ash
# MNP checking script.
# AGI expects it to be in /var/lib/asterisk/agi-bin/
# The script accepts a 10-digit number
# The OP variable is set to YYYY[:ZZZZ] string,
# where YYYY is the original serving operator code,
# and ZZZZ is a "moved to" operator code if the subscriber
# has done MNP. If no MNP move was done - only YYYY is returned.

while read VAR && [ -n ${VAR} ] ; do : ; done
USERAGENT='asterisk v1.8.32.3'
printf "SET VARIABLE OP $(/usr/bin/wget 2>&1 -O - -q -T 5 -U "$USERAGENT" "http://rosreestr.subnets.ru/index.php?get=num&num=$1" |/bin/grep -o 'operatorID: [0-9]\+' |/bin/sed 's/operatorID: //' |/bin/sed 'N;s/\n/:/')"
read RESPONSE
sleep 1s
exit 0
Ошибка остаётся.

Re: AGI: write() returned error: Broken pipe

Добавлено: 15 май 2016, 10:01
virus_net
Wapo писал(а):Там речь идет об OpenWrt - это уж из другой оперы.
это так, но никто не мешает отладить скрипт на компе
скорее всего у тебя остается перевод каретки (перенос строки) после исполнения команды wget, отсюда и ошибка

Re: AGI: write() returned error: Broken pipe

Добавлено: 15 май 2016, 10:44
booBot
Когда я запускаю этот сценарий вручную - по его завершению prompt остаётся на той же строке, куда сценарий только что напечатал ответ сервера:

Код: Выделить всё

root@OpenWrt:~#/var/lib/asterisk/agi-bin/mnp_chk-v2.sh 9219876543
SET VARIABLE OP 1234root@OpenWrt:~#
Перехода на новую строку не происходит.

Добавить sed 's/\n//g' в конец строки преобразования?
Сейчас попробую...

Re: AGI: write() returned error: Broken pipe

Добавлено: 15 май 2016, 11:58
booBot
Добавил /bin/sed 's/\n//g', не помогло.

EDIT:
/bin/sed 's/\r//g' тоже не помогло.

Re: AGI: write() returned error: Broken pipe

Добавлено: 15 май 2016, 20:05
booBot
/bin/sed 's/\n//g;s/\r//g' - хоть и не помогло, оставил так.

Какие ещё могут быть причины ошибки?

Re: AGI: write() returned error: Broken pipe

Добавлено: 16 май 2016, 01:09
gland
Процесс, в который что-то передаётся/из которого что-то читается на тот момент уже не существует, нет?

Re: AGI: write() returned error: Broken pipe

Добавлено: 16 май 2016, 01:31
booBot
Как это можно проверить, и из-за чего это может происходить?