- Как отправить AT-команды на модем в Linux?
- Дополнительная информация
- Связь напрямую с модемом с помощью набора AT-команд
- Команда at в Linux
- Установка at
- Как использовать команду at
- batch команда
- Указание времени выполнения
- Указание очереди
- Список незавершенных вакансий
- Удаление незавершенных заданий
- Ограничение пользователей
- Выводы
- Как отправить AT-команды модему в Linux?
- Дополнительная информация
- Прямая связь с модемом с помощью набора команд AT
- Выполнение AT/USSD команд к /dev/ttyUSB* модему из консоли Linux
- Теория
- Выполнение AT/USSD команд
- minicom
- ussd.py
- Кодировка GSM 7bit в USSD запросах
- Кодирование в gsm7bit
- Декодирование из gsm7bit
- Команда At в Linux
- Установка at
- Как использовать команду at
- Команда batch
- Указание времени выполнения
- Указание очереди
- Список ожидающих работ
- Удаление отложенных заданий
- Ограничение пользователей
- Вывод
Как отправить AT-команды на модем в Linux?
В Linux (Ubuntu) я пытаюсь отправить AT-команды модему по адресу /dev/ttyACM0 . Я пытался сделать это так:
но при наборе чего-либо я просто получаю строку, повторяющую эту команду (я ожидаю OK ).
это похоже на работу. Я печатаю AT и получаю OK . Я набираю немного дерьма, я получаю ERROR .
Похоже, что modem1 для minicom как-то настроено использование модема на /dev/ttyACM0 .
Как я могу использовать socat для отправки AT-команд? Нужно ли что-то настраивать? Может быть, я могу использовать конфигурации для modem1 Minicom (я не знаю, как найти / увидеть эту конфигурацию)?
Дополнительная информация
Является ли данная socat команда правильной? Должен ли я играть с некоторыми вариантами? С -v опцией я вижу следующее:
Само устройство найдено со следующим выводом dmesg:
И tty настроен следующим образом:
Пытаться socat — /dev/ttyUSB2,crnl
Это говорит socat отправить возврат каретки, а также перевод строки.
Разъяснение — это восходит к темным дням электрических пишущих машинок, где вы должны сказать ему откатить каретку до позиции 0 на странице — эрго, возврат каретки — а также сказать ей переместить бумагу вверх на одну строку ,
Лучший способ отправить AT-команды модему в Linux — это использовать программу atinout, написанную с единственной целью отправки AT-команд модему из командной строки.
Вы можете использовать его для проверки работоспособности модема , сделав резервную копию телефонной книги:
или любые другие вещи, для которых вы используете команды AT.
Я наткнулся на этот пост проекта Chromium, который показывает, что вы хотите. Это называется: Отладка сотового модема .
выдержка из этой страницы
Связь напрямую с модемом с помощью набора AT-команд
Большинство модемов поддерживают AT-команды, которые управляют модемом и запрашивают информацию. На устройстве Chromium OS с включенным режимом разработчика вы можете использовать команду socat для связи с модемом. Вам необходимо устройство с ОС Chromium с установленным тестовым образом (или вы можете использовать gmerge socat, если вы знакомы с сервером dev). Например:
- Введите CTRL + ALT + T, чтобы войти в оболочку.
- Введите shell, чтобы войти в оболочку bash.
- Определите, какое USB-устройство использовать с: ls / dev / ttyACM * / dev / ttyUSB *
- Остановите менеджер модема, если он работает: sudo stop modemmanager
- Введите sudo socat — / dev / ttyACM1, crnl или sudo socat — / dev / ttyUSB0 для связи с модемом.
- Убедитесь, что модем включен с помощью команды: «AT + CFUN = 1»
В зависимости от модема вы можете попробовать разные AT-команды, например, «AT + CGMI», «AT + CGSN» и т. Д.
Источник
Команда at в Linux
at — это утилита командной строки, которая позволяет вам планировать выполнение команд в определенное время. Задания, созданные с помощью at , выполняются только один раз.
В этой статье мы расскажем , как использовать at и его компаньоны утилитами batch , atq , atrm просматривать, удалять и создавать новые рабочие места , которые должны выполняться в более позднее время.
Установка at
В зависимости от дистрибутива at может присутствовать или отсутствовать в вашей системе Linux.
Если at не установлен, вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.
- Установить at Ubuntu и Debian
- Установить at CentOS и Fedora
После установки программы убедитесь, что atd , демон планирования запущен и настроен на запуск при загрузке:
Как использовать команду at
Упрощенный синтаксис команды at выглядит следующим образом:
Команда at принимает дату и время ( runtime ), когда вы хотите выполнить задание, как параметр командной строки, и команду, которая должна быть выполнена из стандартного ввода.
Создадим задание, которое будет выполнено в 9:00:
Как только вы нажмете Enter , вам будет представлена командная строка at которая чаще всего начинается с at> . Вы также увидите предупреждение о том, в какой оболочке будет выполняться команда:
Введите одну или несколько команд, которые хотите выполнить:
Когда вы закончите вводить команды, нажмите Ctrl-D чтобы выйти из подсказки и сохранить задание:
Команда отобразит номер задания, время и дату выполнения.
Есть и другие способы , чтобы пройти команду , которую вы хотите запустить, помимо ввода команды в at строке. Один из способов — использовать echo и направить команду по at :
Другой вариант — использовать здесь документ :
Чтобы читать команды из файла вместо стандартного ввода, вызовите команду с параметром -f путь к файлу. Например, чтобы создать задание, которое будет запускать скрипт /home/linuxize/script.sh :
По умолчанию, если команда производит вывод, at отправит электронное письмо с выводом пользователю после завершения задания. Invoke at с -M опцией для подавления уведомлений по электронной почте:
Используйте -m чтобы отправить электронное письмо, даже если нет вывода:
batch команда
batch или его псевдоним at -b планирует задания и выполняет их в пакетной очереди, если позволяет уровень загрузки системы. По умолчанию задания выполняются, когда средняя загрузка системы ниже 1,5. Значение нагрузки можно указать при вызове демона atd . Если средняя загрузка системы выше указанной, задания будут ждать в очереди.
Чтобы создать batch задание, передайте команды, которые хотите выполнить:
Указание времени выполнения
Утилита at поддерживает широкий диапазон временных характеристик. Вы можете указать время, дату и приращение от текущего времени:
- Время — чтобы указать время, используйте форму HH:MM или HHMM . Чтобы указать 12-часовой формат времени, используйте am или pm после времени. Вы также можете использовать такие строки, как now , midnight , noon или teatime (16:00). По истечении указанного времени задание будет выполнено на следующий день.
- Дата — команда позволяет запланировать выполнение задания на заданную дату. Дату можно указать, используя название месяца, за которым следует день и (необязательно) год. Вы можете использовать строки, например, today , tomorrow или будний день. Дата также может быть указана в MMDD[CC]YY , MM/DD/[CC]YY , DD.MM.[CC]YY или [CC]YY-MM-DD .
- Increment — at также принимает приращения в формате now + count time-unit , где count — это число, а time-unit может быть одной из следующих строк: minutes , hours , days или weeks .
Время, дату и приращение можно комбинировать, вот несколько примеров:
- Запланируйте работу на ближайшее воскресенье на время на десять минут позже текущего:
- Запланируйте запуск задания на 13:00 через два дня:
- Запланируйте запуск задания на 12:30 21 октября 2020 г .:
- Запланируйте запуск задания через час:
Вы также можете указать время и дату в [[CC]YY]MMDDhhmm[.ss] используя параметр -t . Вот пример:
Указание очереди
По умолчанию задания, созданные с помощью at , планируются в очереди с именем a а задания, созданные с помощью batch , планируются в очереди b .
Запросы могут иметь имена от a до z и от A до Z Очереди с меньшими буквами работают с меньшей аккуратностью, что означает, что они имеют приоритет над очереди с более высокими буквами.
Вы можете указать очередь с помощью опции -q . Например, чтобы установить задание в L очередь, вы должны запустить:
Список незавершенных вакансий
Чтобы вывести список ожидающих заданий пользователя, выполните atq или at -l :
В выводе будут перечислены все задания, по одному в каждой строке. Каждая строка включает номер задания, дату, время, букву очереди и имя пользователя.
Когда atq вызывается от имени администратора, он перечисляет ожидающие задания всех пользователей.
Удаление незавершенных заданий
Чтобы удалить отложенное задание, atrm команду atrm или at -r после которой atrm номер задания. Например, чтобы удалить задание с номером девять, вы должны запустить:
Ограничение пользователей
/etc/at.deny и /etc/at.allow позволяют контролировать, какие пользователи могут создавать задания с помощью команды at или batch . Файлы состоят из списка имен пользователей, по одному имени пользователя в строке.
По умолчанию существует только файл /etc/at.deny и он пуст, что означает, что все пользователи могут использовать команду at . Если вы хотите отказать в разрешении определенному пользователю, добавьте имя пользователя в этот файл.
Если файл /etc/at.allow существует, только пользователи, перечисленные в этом файле, могут использовать команду at .
Если ни один из файлов не существует, только пользователи с правами администратора могут использовать команду at .
Выводы
Утилита at считывает команды со стандартного ввода и выполняет их позже. В отличие от crontab , задания, созданные с помощью at , выполняются только один раз.
Для получения дополнительной информации обо всех доступных параметрах команды at введите man at в вашем терминале.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии.
Источник
Как отправить AT-команды модему в Linux?
В Linux (Ubuntu) я пытаюсь отправить AT-команды модему в /dev/ttyACM0 . Я попытался сделать это как:
но при вводе чего-либо я просто получаю строку, повторяющую эту команду (я ожидаю OK ).
он работает. Я набираю AT и получаю OK . Я печатаю немного дерьма, я получаю ERROR .
Кажется, что modem1 для minicom каким-то образом настроен на использование модема в /dev/ttyACM0 .
Как я могу использовать socat для отправки AT-команд? Нужно ли мне что-то настраивать? Может быть, я могу использовать конфигурации для modem1 minicom (я не знаю, как найти / увидеть эту конфигурацию)?
Дополнительная информация
Правильно ли данная команда? Должен ли я играть с некоторыми опциями? С опцией -v я вижу следующее:
Само устройство найдено со следующим выходом dmesg:
И tty настроен следующим образом:
Я наткнулся на эту статью проекта Chromium, которая показывает, что вы хотите. Это называется: Отладка сотового модема .
выдержка из этой страницы
Прямая связь с модемом с помощью набора команд AT
Большинство модемов поддерживают AT-команды, которые управляют модемом и запрашивают информацию. На устройстве Chromium OS с включенным режимом разработчика вы можете использовать команду socat для связи с модемом. Вам нужно устройство Chromium OS с установленным тестовым изображением (или вы можете использовать gmerge socat, если вы знакомы с сервером dev). Например:
- Введите CTRL + ALT + T, чтобы войти в оболочку crosh.
- Введите shell, чтобы войти в оболочку bash.
- На рисунке показано, какое устройство USB использовать с: ls / dev / ttyACM * / dev / ttyUSB *
- Остановите диспетчер модема, если он запущен: sudo stop modemmanager
- Введите sudo socat – / dev / ttyACM1, crnl или sudo socat – / dev / ttyUSB0 для связи с модемом.
- Убедитесь, что модем включен с помощью команды: «AT + CFUN = 1»
В зависимости от модема вы можете попробовать различные AT-команды, например «AT + CGMI», «AT + CGSN» и т. Д.
Попробуйте socat — /dev/ttyUSB2,crnl
Это означает, что socat отправит возврат каретки, а также линию.
Уточнение – это восходит к темным дням электрических пишущих машинок, где вам придется сказать, чтобы он вернул каретку в положение 0 на странице – эрго, возврат каретки, а также сказал ему переместить бумагу на одну линию ,
Лучшим способом отправки AT-команд модему в Linux является использование программы atinout, которая написана с единственной целью отправки AT-команд модему из командной строки.
Вы можете использовать его, чтобы проверить, работает ли модем , сделайте резервную копию телефонной книги:
или любые другие вещи, которые вы используете для AT-команд.
Источник
Выполнение AT/USSD команд к /dev/ttyUSB* модему из консоли Linux
Утилиты и скрипты для коммуникации с /dev/ttyUSB* устройством из shell консоли (bash скриптов).
Теория
Отправить в /dev/ttyUSB* терминал AT команду не составляет проблем. Но результат вывода мы не увидим!
Мы можем читать поток stdout c /dev/ttyUSB2 (результат выполнения команд):
- Нужно получить только результат выполнения конкретной AT команды, а не весь поток вывода.
- Нужно использовать gsm7bit кодировку для кодирования параметров и получения ответа при выполнении USSD запросов:
- Ну и хочется простоты в работе)
Выполнение AT/USSD команд
Скрипт at.sh для отправки AT команды и получения ответа в переменную:
Но вы получите ответ вида:
minicom
Можно отправить AT команду и перенаправить весь вывод в файл:
После этого нужно закрыть терминал и разобрать/декодировать весь вывод из файла output.txt. Не круто..
ussd.py
В сети нашел python скрипт для отправки USSD запросов (немного поправил):
Кодировка GSM 7bit в USSD запросах
Кодирование в gsm7bit
При отправке USSD запросов нужно кодировать USSD-код в кодировку GSM 7bit (как я понял из-за того, что модем не поддерживает текстовый режим).
Следующие запросы вернут ERROR:
Python функция gsm7bitencode для кодирования utf8 строки в gsm7bit:
Примечание
Смотрите онлайн-сервис для работы с кодировками: http://smstools3.kekekasvi.com/topic.php?id=288
Пример USSD команд в кодировке 7bit gsm проверки баланса:
Кодированные ответы (ответ всегда приходит на устройство /dev/ttyUSB2):
Декодирование из gsm7bit
Python функция gsm7bitdecode для декодирования gsm7bit в utf8:
Источник
Команда At в Linux
В этой статье мы расскажем, как использовать at и его компаньоны утилиты batch, atq, atrm, которые позволяют просматривать, удалять и создавать новые рабочие места, которые должны выполняться в более позднее время.
Установка at
В зависимости от дистрибутива at может присутствовать или не присутствовать в вашей системе Linux.
Если at не установлена, вы можете легко установить его, используя менеджер пакетов вашего дистрибутива.
- Установить at на Ubuntu и Debian
- Установить at на CentOS и Fedora
После установки программы atd, убедитесь что демон планирования запущен и настроен на запуск при загрузке:
Как использовать команду at
Упрощенный синтаксис команды at выглядит следующим образом:
Команда at берет дату и время ( runtime), когда вы хотите выполнить задание в качестве параметра командной строки, и команду, которая будет выполнена из стандартного ввода.
Давайте создадим задание, которое будет выполнено в 12:00 утра:
После того, как вы нажмете Enter, вы увидите командную строку at, которая чаще всего начинается с at>. Вы также видите предупреждение о том, что оболочка, в которой будет выполняться команда:
Введите одну или несколько команд, которые вы хотите выполнить:
Когда вы закончите ввод команд, нажмите Ctrl-D, чтобы выйти из командной строки и сохранить задание:
Команда отобразит номер задания, время выполнения и дату.
Есть и другие способы передачи команды, которую вы хотите выполнить, помимо ввода команды at в командной строке. Одним из способов является использование echo и передача команды для at:
Другой вариант заключается в использовании здесь документа:
Чтобы прочитать команды из файла вместо стандартного ввода, вызовите команду с опцией -f, следующей за путем к файлу. Например, чтобы создать задание, которое будет запускать скрипт /home/andreyex/script.sh:
По умолчанию, если команда выдает результат, atотправит электронное письмо с выводом пользователю после завершения задания. Вызвать at -M с возможностью подавления уведомления по электронной почте:
Используйте -m для отправки электронной почты, даже если нет вывода:
Команда batch
batch или его псевдоним at -b, планирует задания и выполняет их в очереди пакетов, когда позволяет уровень загрузки системы. По умолчанию задания выполняются, когда средняя загрузка системы ниже 1,5. Значение загрузки может быть указано при вызове демона atd. Если средняя загрузка системы выше указанной, задания будут ждать в очереди.
Чтобы создать задание batch, передайте команды, которые вы хотите выполнить:
Указание времени выполнения
Утилита at принимает широкий диапазон спецификаций времени. Вы можете указать время, дату и приращение от текущего времени:
- Время – чтобы указать время, используйте форму HH:MMили HHMM. Чтобы указать 12-часовой формат времени, используйте am или pm после времени. Вы можете также использовать строки, как now, midnight, noon или teatime(16:00). Если указанное время прошло, задание будет выполнено на следующий день.
- Дата – команда позволяет запланировать выполнение задания на определенную дату. Дата может быть указана с использованием названия месяца, затем дня и необязательного года. Вы можете использовать строки, например today, tomorrow или будний день. Дата может быть также указано , используя форматы MMDD[CC]YY, MM/DD/[CC]YY, DD.MM.[CC]YY или [CC]YY-MM-DD.
- Приращение – at также принимает приращения в формате now + count time-unit, где count – это число и time-unit может быть одна из следующих строк: minutes, hours, days, или weeks.
Время, дата и приращение могут быть объединены, вот несколько примеров:
- Запланируйте работу на предстоящее воскресенье на десять минут позже текущего времени:
- Запланируйте работу на 14:00 через два дня:
- Запланируйте работу на 12:30 25 октября 2020 года:
- Запланируйте задание на выполнение через час:
Вы также можете указать время и дату [[CC]YY]MMDDhhmm[.ss] используя опцию -t. Вот пример:
Указание очереди
По умолчанию задания, созданные с помощью at, планируются в названной очереди, aа задания, созданные с помощью batch, планируются в очереди.
Запросы могут иметь имя от a до z и A до Z. Очереди со строчными буквами запускаются с меньшим количеством символов, что означает, что они имеют приоритет перед теми, которые имеют более высокие буквы.
Вы можете указать очередь с опцией -q. Например, чтобы установить задание в очередь L, вы должны выполнить:
Список ожидающих работ
Чтобы просмотреть список ожидающих заданий пользователя, введите команду atq или at -l:
В выводе будут перечислены все задания, по одному на строку. Каждая строка содержит номер задания, дату, время, букву очереди и имя пользователя.
Когда atq вызывается как администратор, он перечисляет ожидающие работы всех пользователей.
Удаление отложенных заданий
Чтобы удалить отложенное задание, вызовите команду atrm или at -r, за которой следует номер задания. Например, чтобы удалить задание с номером три, вы должны выполнить:
Ограничение пользователей
Файлы /etc/at.deny и /etc/at.allow позволяют вам контролировать, какие пользователи могут создавать новые рабочие места с командой at или batch. Файлы состоят из списка имен пользователей, по одному имени пользователя в строке.
По умолчанию существует только файл /etc/at.deny и является пустым, что означает, что все пользователи могут использовать команду at. Если вы хотите отказать в разрешении определенному пользователю, добавьте имя пользователя в этот файл.
Если файл /etc/at.allow существует, только пользователи, перечисленные в этом файле, могут использовать команду at.
Если ни один из файлов не существует, только команда с правами администратора может использовать команду at.
Вывод
Утилита at считывает команду из стандартного ввода и выполняет их в более позднее время. В отличие от crontab, задания, созданные с помощью at, выполняются только один раз.
Для получения дополнительной информации обо всех доступных опциях типа команды at man at в вашем терминале.
Если у вас есть какие-либо вопросы, не стесняйтесь оставлять комментарии.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник