scmxx

## Название

scmxx — осуществляет обмен данными с вашим мобильным телефоном Siemens

## Синтаксис

`scmxx` [`--device` `устройство`] [`--baud` `скорость_передачи`] [`--quiet`] [`--verbose`] [`--reset`] {[`--info`] | [`--set-time`] | [`--mem-info`] | [`--lock-info`] | [ `--lock` `блокировка` {[`--enable`] | [`--disable`]} ] | [ `--set-smsc` `--number` { `номер` | `имя` } ]}

`scmxx` [`--device` `устройство`] [`--baud` `скорость_передачи`] [`--quiet`] [`--verbose`] [`--out` `файл`] [`--pipe` `канал`] {[`--remove`] | [`--send`] | [`--get`]} [`--binary`] [`--mem` `тип_памяти`] [`--slot` `слот`] [`файл...`]

`scmxx` [`--device` `устройство`] [`--baud` `скорость_передачи`] [`--quiet`] [`--verbose`] [`--out` `файл`] [`--pipe` `канал`] [`--pin` `PIN-код`] {[`--remove`] | [`--send`] | [`--get`]} [`--pbook`] [`--mem` `тип_памяти`] [`--slot` `слот`] [`--text` `текст`] [ `--number` { `номер` | `имя` } ] [`файл...`]

`scmxx` [`--device` `устройство`] [`--baud` `скорость_передачи`] [`--quiet`] [`--verbose`] [`--out` `файл`] [`--pipe` `канал`] {[`--remove`] | [`--send`] | [`--get`]} [`--sms`] [`--mem` `тип_памяти`] [`--slot` `слот`] [`--text` `текст`] [ `--number` { `номер` | `имя` } ] [`--direct`] [`--flash`] [`--srr`] [`--unicode`] [`файл...`]

`scmxx` [`--help`] [`--version`]

## Описание

SCMxx может копировать файлы в мобильный телефон Siemens и обратно, а также удалять сохраненные файлы. Файлы могут быть прочитаны из указанного файла или получены через стандартный ввод и сохранены в конкретном файле или переданы на стандартный вывод. SMS могут быть также напрямую переданы или приняты без сохранения в мобильном телефоне. SCMxx была протестирована с несколькими мобильными телефонами, произведенными Siemens (только S25 и поздние).

## Опции

`--device (-d)`

  определить отличное от вкомпилированного имя устройства. Опция перекрывает переменную окружения SCMXX_TTY и вкомпилированное значение. Для системы linux может быть, к примеру, /dev/ttyS0 для последовательного соединения, /dev/ircomm0 для соединения по инфракрасному порту и /dev/rfcomm0 для соединения по каналу bluetooth.

`--baud (-b)`

  определить скорость устройства. Подходящие значения зависят от системы, но могут быть 9600, 19200, 38400, 57600 или 115200. Значение по умолчанию 19200. Телефоны S25 и *35i работают только при скорости 19200, все поздние модели также работают при полной скорости последовательного канала. Соединения по инфракрасному порту могут содержать исключения из этих правил (зависит от реализации порта). Опция перекрывает значение переменной окружения SCMXX_BAUD и вкомпилированное значение.

`--out (-o)`

  определить используемый файл. При получении бинарных файлов с параметром "all" к каждому имени файла добавляется номер слота, точка и тип файла. При отправке или удалении, опция не будет использоваться, но в качестве параметра должны быть указаны корректные файлы. Стандартный вывод должен быть однозначно выбран через дефис ("-"), по умолчанию ничего не выводится на стандартный вывод. Ничего не добавляется к "-", когда идет получение группы файлов.

`--pipe (-p)`

  определить канал к другой программе. При получении данных с параметром "all", каждый файл будет передан по каналу к этим программам в отдельности (только для опций --binary и --sms).

`--quiet (-q)`

  уменьшить степень подробности вывода на 1

`--pin`

  использовать эту опцию, если требуется ввести PIN код для доступа

`--verbose (-v)`

  увеличить степень подробности вывода на 1

`--reset`

  попытаться сбросить телефон, и он снова станет доступен. Это может понадобится в случае, если телефон больше не отвечает по последовательному интерфейсу, особенно при прерванной перед этим пользователем передачи файла. Произойдет просто слепая передача некоторых специальных символов.

`--help (-h)`

  вывести текст помощи

`--version`

  вывести номер версии

`--remove (-r)`

  удалить запись в телефоне. Когда опция определена с опциями --sms и --get, будут произведены получение и удаление. Когда опция определена с опциями --sms и --send, будут произведены отправка и удаление.

`--get (-g)`

  получить запись и сохранить ее в файл. Когда опция определена с опциями --sms и --remove, будут произведены получение и удаление. Когда опция определена с опциями --sms и --send, будут произведены получение и отправка.

`--send (-s)`

  отправить файл в телефон. При отправке sms возможно использование совместно с опцией --direct, чтобы его увидеть на экране. Когда опция определена с опциями --sms и --remove, будут произведены отправка и удаление. Когда опция определена с опциями --sms и --get, будут произведены получение и отправка.

`--info (-i)`

  собрать информацию о телефоне, --mem-info может быть использована для переключения вывода между кратким и более сложным списком доступных типов памяти.

`--mem-info`

  отобразить информацию о доступных типах памяти и их слотах, а также другую информацию. Опция использует такой же формат, как и --mem=? (смотрите ниже), и также может быть использована как переключатель для --info, чтобы заместить краткий список типов памяти.

`--lock-info`

  отобразить состояние блокировок. Может быть также использована как переключатель для --info, чтобы заместить вывод списка имен блокировок.

`--lock`

  определить блокировку, которую необходимо установить или снять. Для некоторых блокировок необходим пароль (см. опцию --pin).

`--enable`

  установить какую-либо блокировку

`--disable`

  снять какую-либо блокировку

`--dial`

  позвонить по заданному номеру (требуется опция --number). Программа возвратится или через 10 секунд, или после установки соединения с удалённой стороной.

`--hangup`

  сбросить все текущие активные вызовы.

`--set-time`

  синхронизировать время в телефоне. Рекомендуется использовать инструменты типа ntpdate перед синхронизацией.

`--set-smsc`

  установить номер SMS-центра (требует опцию --number)

`--binary (-N)`

  выбрать режим обмена бинарными файлами

`--pbook (-P)`

  выбрать режим передачи телефонной книги

`--sms (-S)`

  выбрать режим службы коротких сообщений

`--mem`

  выбрать тип памяти, к которой осуществляется доступ. Номера слотов могут варьироваться в зависимости от выбранного типа памяти. Смотрите вывод опции --info для определения поддерживаемых типов памяти. Без использования этой опции срабатывает поведение по умолчанию (если таковое было определено). Специальная строка "?" предназначена для вывода в таком же формате, как и --mem-info, но только для выбранного режима.

`--slot`

  выбрать слот, к которому осуществляется доступ. Смотрите вывод --mem-info или --mem=?. Без использования этой опции включается поведение по умолчанию (если таковое было определено). Специальная строка "all" определяет полный диапазон всех доступных слотов для выбранных типа памяти и режима, за исключением использования совместно с --sms, и не может быть использована совместно с --send. Для SMS, доступны четыре дополнительных специальных строки: "read" (прочитанные), "unread" (непрочитанные), "sent" (отправленные) и "unsent" (неотправленные). Последние два варианта могут быть использованы вместе с --send. Для доступа к телефонной книге доступна дополнительная строка "last". При опущенной этой опции и использовании вместе с --send scmxx попытается найти свободный слот (что может занять, а может и нет, некоторое длительное время). Поиск пустого слота пока что не поддерживается для телефонных книг. Когда слот и группа файлов для загрузки определены, необходимый слот является стартовой точкой для поиска свободных слотов. Перезапись группы непустых слотов пока что не поддерживается, кроме специального случая "all".

`--text (-t)`

  определить содержание текста короткого сообщения или записи телефонной книги. Для записей телефонной книги лимит длины может зависеть от выбранной книги (см. вывод --mem-info или --mem=?).

`--number (-n)`

  определить номер для отправки короктого сообщения или номер записи телефонной книги. Заметьте, что номер может иметь вначале '+' для международных номеров. Он ограничен 20 цифрами (без '+'), которых действительно достаточно.

`--direct`

  отправить/получить короткие сообщения без сохранения в памяти телефона. Это не выполняется по умолчанию, так как вы будете несомненно заняты сообщением, при отправке. При непосредственном получении, SMS, тип которого не соответствует DELIVER, все еще сохраняется в памяти телефона (scmxx не может пока что декодировать такие сообщения).

`--unicode`

  переслать сообщение и ипользовать UCS-2 (16бит unicode) как таблицу символов. Необязательно применять эту опцию для декодирования сообщений, написанных в кодировке unicode.

`--flash`

  установить class0 в поле схемы кодирования данных, что обычно интерпретируется как "немедленное отображение". Не все принимающие аппараты дают право делать это. Заметьте, что очередное sms такого типа обычно перезаписывает предыдущее сообщение без вопросов! Её использование не рекомендуется.

`--srr`

  установить бит StatusReportRequest в поле pdutype из sms pdu. Это зависит от SMSC, если это принимать во внимание. С некоторыми провайдерами это потребует дополнительных затрат!

`--sort`

  сортировать сообщения при печати на выбранное устройство вывода. Возможными методами сортировки являются "type" (тип), "slot" (слот) и "type,slot" (тип, слот). "type" сортирует по типу короткого сообщения с вложенным порядком сортировки, при котором неподдерживаемые типы печатаются вначале, затем SMS-SUBMIT, SMS-STATUS-REPORT и SMS-DELIVER. "slot" сортирует по слоту короткого сообщения. "type,slot" осуществляет сортировку вначале по "type" и затем внутри блока каждого типа по "slot". По умолчанию никакой сортировки не производится (порядок зависит от телефона).

`--pin`

  включить использование pin-кода. Используйте это лишь в случае возникновения ошибки, которая требует ввода PIN-кода либо PUK-кода. Для PIN-кода соответственно передаётся "<PIN-код>", для PUK-кода - "<PUK-код>,<новый PIN-код>". Значение используется однократно. Рассмотрите использование pin-файла (см. ниже) вместо этой опции.

`--system-charset`

  определить системную таблицу символов вместо используемого значения, возвращаемого функцией nl_langinfo(CODESET). Этот обходной манёвр необходим для систем, которые не поддерживают юникодные локали, такие как UTF-8, или когда данные от другой системы в отличной локали используются на входе. Обычно эта опция не применяется.

## Примеры

Отправить файл растрового изображения в телефон как Картинку (Логотип):

  scmxx `--send` `--binary` `--mem`="bmp" `--slot`=0 myfile.bmp

Получить Картинку из телефона и сохранить ее в новом файле:

  scmxx `--get` `--binary` `--mem`="bmp" `--slot`=0 `--out`=myfile.bmp

Получить все непрочитанные (режим по умолчанию при get) короткие сообщения и вывести их на стандартный вывод:

  scmxx `--get` `--sms` `--slot`=unread `--out`=-

  scmxx `-gS` `-o`-

Отправить короткое сообщение напрямую (без сохранения в телефоне):

  scmxx `--send` `--sms` `--direct` `--number`=123 `--text`="тест"

Получить телефонную книгу и сохранить её в файле:

  scmxx `--get` `--pbook` `--mem`=SM `--out`=SM.pb

Изменить указанный слот (33) в памяти SM телефонных книг:

  scmxx `-sP` `--mem`=SM `--slot`=33 `--number`=123 `--text`="тест"

## Замечания

Выводимый текст (телефонная книга и сообщения) зависит от таблицы символов текущей локали. Вводимый аналогично. Такое преимущество у локализации, но есть и недостаток, что все остальные символы должны вводиться через последовательность вида \XXXX, где X - шестнадцатиричный символ (например, \20ac для знака Euro). Это 16битное представление значения unicode. Представление \XXXX используется только для вывода с целью его последующего прочтения. При нормальном выводе, символы, которые не могут быть отображены в текущей локали, заменяются на символ '?'. Использование локализации, базирующейся на UTF-8, гарантирует, что все символы могут быть перекодированы. Символ новой строки может быть введен, используя общее представление \n, а символ '\' должен быть экранирован сам собой. В bash в результате необходимо вводить строку подобно "\\\\".

## Проблемы соединения

Здесь описываются дополнительные параметры --ignore-serial-bits (по умолчанию) и --keep-serial-bits. Используйте его только тогда, когда вообще нет ответа от телефона. Такие установки зависят от кабеля и последовательного порта и не могут быть определены автоматически.

Если при первой команде происходят таймауты, следует попробовать параметр --start-delay=<секунды>.

Другой параметр --device-timeout=<секунды> предназначен для случая, когда телефону когда-либо потребуется больше времени на ответ, чем определенные по умолчанию 10 секунд. Действительно, это было более чем достаточно, но кто знает. Минимальное значение равно 1, значения, превышающие 25, подразумевают ожидание ответа до тех пор, пока он не будет получен.

## Безопасность

Опцию --pin необходимо использовать с осторожностью. Опция и ее аргумент будут видны в списке процессов.

## Переменные окружения

SCMXX_TTY

  смотрите описание опции --device

SCMXX_BAUD

  смотрите описание опции --baud

## Файлы

~/.scmxx/cache.pb

  этот файл служит при выводе короткого сообщения (для подмены адресов получателя и отправителя) и при отправке короткого сообщения для подмены номера в опции --number. Формат файла совпадает с форматом файла для телефонной книги (номера слотов не имеют значения, но должны присутствовать).

~/.scmxx/config

  этот файл может содержать набор длинных опций (без --), аргументы отделяются от названия опции символом '='. Любое количество пробельных символов допускается вначале строки, перед и после разделителя. Символ '#' вначале строки помечает её как комментарий. Примеры:

  #выбрать устройство доступа
  device = /dev/ttyS0
  #всегда отправлять SMS с использованием UCS-2
  unicode

~/.scmxx/pin

  Данный файл используется как алтернатива опции командной строки --pin. Файл НЕ должен быть доступен группе или всем на чтение/запись! Также он ДОЛЖЕН быть обычным файлом, не символической ссылкой. SCMxx отвергает файлы в подобных случаях. Если значение PUK-кода запрашивается телефоном, соответствующий PIN-код должен быть также определён. Только такие элементы форматирования являются необходимыми: '{', '=', ';' и '}'. Пробелы и символы новой строки игнорируются. Файл имеет следующий формат:

  sim 262031234567890 {
  pin = 1234
  puk = 12345678;
  pin2 = 4321;
  puk2 = 87654321;
  }
  device 350123456789012 {
  type SIM {
  pin = 0000;
  puk = 0000;
  }
  }

  Секции "sim" используют IMSI в качестве идентификатора, секции же "device" уже используют IMEI как идентификатор (см. вывод опции --info). Следовательно IMSI необходим, так как без него НЕЛЬЗЯ включить телефон! Подсекция "type" в секции device определяет следующие идентификаторы:

  SIM
    код устройства (защита от кражи)
  FSIM
    самая первая установленная SIM-карта
  NET
    привязка к сети
  NETSUB
    дополнительная привязка к сети
  SP
    привязка к оператору связи
  CORP
    привязка к корпорации

## Автор

Hendrik Sattler `<post@hendrik-sattler.de>`. Перевод выполнен Andy Shevchenko `<andy@smile.org.ua>` и Irina Yeresko `<mecec@yandex.ru>`.