Приветствую форумчан. Снова погуглил на предмет возможности проверки баланса USB-модема под линуксом, и раньше и сейчас попалось несколько вариантов и для разных модемов/операторов, но то ли модем у меня такой, то ли руки, в общем ничего не выходило, и я решил составлять его сам. Немножко разобрался, рассматривая те скрипты. Остановился на таком моменте. Не знаю как передать команде содержимое текстового файла на обработку. Добился от миникома, чтобы он, опросив модем, длинный ответ вида "041C043E04310438043B044C043D044B04390020043F043B043004420......" положил в файл. Ответ в таком виде, потому что он закодирован, и это неудобно. Текст файла надо передать дальше на раскодировку, знаю что можно как-то, но какой командой вытащить его из файла? В скриптах я только начинаю разбираться, и нужна ваша помощь ))
Вот скрипт:
#!/bin/bash
#
#
SCR=/home/otten/balans/balans
LINE=/home/otten/balans/line
(
echo 'send "ATZ"'>$SCR
echo 'send ""' >>$SCR
echo "send \"AT+CUSD=1,*102#,15\"">>$SCR
echo 'expect {'>>$SCR
echo '"\"," ! killall -9 minicom'>>/$SCR
echo ' }'>>$SCR
echo '! killall -9 minicom'>>$SCR
minicom -w -S $SCR -C $LINE >/dev/null 2>&1
) >/dev/null 2>&1
reset
echo 'ТЕКСТ ФАЙЛА' | perl -ne '@a = m/([0-9A-F]{4})/g; map { eval "print \"\\x{$_}\""; } @a;' 2>/dev/null
unlink $SCR
unlink $LINEКогда сработает скрипт, в терминале должно остаться примерно следующее: Баланс 115.00р. Трафик 37800 Кб.
В этом и весь смысл, что хочется получить от модема USSD-ответ и раскодировать его одной командой-скриптом.


