Как стать автором
Обновить

Управление компьютером с помощью SMS сообщений

Время на прочтение 3 мин
Количество просмотров 10K
Хочу предложить вашему вниманию программу, которую я написал ради эксперимента. Программа представляет из себя системную службу, которая работает с GSM модемом, умеет принимать и отправлять SMS сообщения. В зависимости от текста пришедшего сообщения вызывает указанные скрипты и отправляет ответ.
Может пригодится, например, для управления сервером, доступ к которому ограничен (находится во внутренней сети компании). Не судите строго, т.к. это скорее прототип, первая версия.


Скачать программу можно здесь.

В архиве программы находятся несколько файлов: сама программа (SMSRC.exe), файл установок (options.ini), примеры готовых скриптов (папка scripts).

Железо
Должно работать с любым GSM модемом, либо сотовым телефоном, который может быть подключен в режиме GSM модема. Для определения номера порта, на котором «висит» модем, необходимо зайти в панель управления, открыть панель Телефон и модем на закладке Модемы в столбце Подключен к посмотреть номер порта.

Настройка и запуск
Перед запуском необходимо изменить файл установок (указать порт, как минимум прописать свои номера), убедиться, что на компьютере не запущено других программ, работающих с GSM модемом.

Для установки программы в качестве службы необходимо запустить ее с ключем -install. Для удаления из служб -uninstall. Для запуска без добавления в системные службы -debug (окна при запуске не создаст, для останова придется «убивать» через список процессов).

Файл установок представляет из себя ini файл в котором задаются параметры подключения к устройству и сценарии обработки сообщений.

[Settings]
; Номер порта, на котором висит модем
port = com8
rate = 115200
; Интервал проверки в миллисекундах
timeout = 5000

Далее следуют сценарии. Рассмотрим один из них для примера.

; В квадратных скобках текст пришедшего сообщения
[123]
; Путь к скрипту
script = scripts\cpuLoad.vbs
; Отправлять ответ. Если ключ отсутствует,
; либо его значение не равняется единице ответ отправляться не будет
reply = 1
; Номер, на который следует отправлять ответ
replyTo = 7917XXXXXXX
; Действие разрешено, если запрос пришел с одного из указанных номеров
allowedTo = 7917XXXXXXX,7902YYYYYYY

Если с номера 7917XXXXXXX или 7902YYYYYYY придет сообщение с текстом 123 будет выполнен скрипт cpuLoad.vbs и ответ будет отправлен на номер 7917XXXXXXX

Скрипт cpuLoad.vbs содержит:

On Error Resume Next

Dim strComputer : strComputer = "."
Dim strResponse

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")

Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Processor",,48)

For Each objItem in colItems
  strResponse = strResponse & "CPU load: " & objItem.LoadPercentage & "%" & vbCrLf
Next

Wscript.Echo strResponse


* This source code was highlighted with Source Code Highlighter.


Скрипт, через WMI, получает информацию об установленных процессорах, для каждого из них определяет текущую загрузку и выдает результат через Wscript.Echo. Этот текст и будет отправлен SMS-кой.

Внимание! Не используйте в скрипте MsgBox, при выполнении такого скрипта программа будет ждать окончания выполнения скрипта, а скрипт, в свою очередь, закрытия окна сообщения.

В качестве примера в архиве так же присутствует скрипт для определения IP адреса подключения к локальной сети и открытия mp3 файла.

После запуска в директории программы будет создан файл debug.log, который, в случае неработоспособности, сможет подсказать где искать причину.

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

Буду рад, если программа кому-нибудь окажется полезной.

UPD

Набор классов для получения, отправки SMS сообщений и пример использования в исходниках на C++ лежит здесь По идее должно работать под любой версией Windows

UPD2 Добавлен ключ -send для отправки SMS из коммандной строки. Пример:

SMSRC.exe -send XXXXXXXXXXX «from cmd line!»

Где XXXXXXXXXXX — номер, на который следует отправить SMS.

В данный момент программа работает в режиме «дудочка или кувшинчик», т.е. запустить программу как сервис и одновременно использовать ее для отправки SMS из коммандной строки нельзя. Первый экземпляр откроет COM-порт, к которому подключен модем, и кроме него доступ к модему больше никто не получит. В данный момент я решаю, как разрешить использовать нескольким экзеплярам один порт. Как решу — выложу обновление.
Теги:
Хабы:
+41
Комментарии 41
Комментарии Комментарии 41

Публикации

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн