LinuxForum.Fans
Тема

at команды в bash-скрипте

Автор: BashOrgRu 10 сообщений 6069 просмотров
#266784

Добрый вечер, столкнулся с проблемой, прошу у вас помощи.
Есть модем, которым я управляю через microcom, запускаю его так:

text
# microcom -s 115200 /dev/ttyS1 

Все что я пишу он воспринимает и работает нормально, но встала задача несколько автоматизировать процесс управления с помощью баш-скриптов и так вопрос:
Как мне посылать команды в microcom прямо из скрипта?
Заранее благодарен.

#266785

Возможно

text
echo "AT...команда" > /dev/ttyS1
#266786

А специально предназначенная для этого команда chat не подходит?

#266788

Я использую modem-stats -c .

#266819

это делается или через уже упомянутый chat или, если нужна сложная логика. то через expect.

#267858

Спасибо за ответы, делаю так:

text
microcom -s 115200 /dev/ttyS1
ATZ
OK
AT+CMGF=1
OK
AT+CMGS="+7912XXXXXXX"
> TEST123 CTRL+Z

SMS мне приходит в течении 10 сек

Затем пытаюсь то же самое сделать в скрипте:

text
#!/bin/sh
/bin/echo -e 'AT+CMGF=1 \n' > /dev/ttyS1
sleep 2
/bin/echo -e 'AT+CMGS="+7912XXXXXXX" \n' > /dev/ttyS1
sleep 2
/bin/echo -e 'TEST123 \032 \n' > /dev/ttyS1
sleep 2

"\032" - код CTRL+Z
"\n" - Вместо Enter
Sleep - что бы команда успела выполниться перед запуском следующей
Смс не отправляется, понять причины не могу, целый день потратил, пожалуйста, помогите разобраться.

И еще вопрос, приведите какой-нибудь пример работы с командой chat, спасибо.

#267859

А если в консоли запускать последовательно эти команды?
Ошибки какие-нибудь выдаёт?

#267865
BashOrgRu написал:
И еще вопрос, приведите какой-нибудь пример работы с командой chat, спасибо.

По идее это и не должно работать, потому что это последовательное устройство.
Примеры с chat есть в гугле, правда я не знаю как это получестя без pppd

#267887
Lupo Alberto написал:
А если в консоли запускать последовательно эти команды?
Ошибки какие-нибудь выдаёт?

Нет, если выполнять в консоли все эти команды, то смс доходит и это очень странно

#267903

Во всём виноваты кавычки :)

text
#!/bin/sh
/bin/echo -e "AT+CMGF=1 \n" > /dev/ttyUSB1
sleep 2
/bin/echo -e "AT+CMGS=\"+79022XXXXXX\" \n" > /dev/ttyUSB1
sleep 2
/bin/echo -e "TEST123 \032 \n" > /dev/ttyUSB1
sleep 2

Вот это работает. Модем ZTE MF100, поэтому ttyUSB1.

Войдите или зарегистрируйтесь, чтобы ответить.