Хочу предложить вашему вниманию программу, которую я написал ради эксперимента. Программа представляет из себя системную службу, которая работает с 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 содержит:
Скрипт, через 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-порт, к которому подключен модем, и кроме него доступ к модему больше никто не получит. В данный момент я решаю, как разрешить использовать нескольким экзеплярам один порт. Как решу — выложу обновление.
Может пригодится, например, для управления сервером, доступ к которому ограничен (находится во внутренней сети компании). Не судите строго, т.к. это скорее прототип, первая версия.
Скачать программу можно здесь.
В архиве программы находятся несколько файлов: сама программа (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-порт, к которому подключен модем, и кроме него доступ к модему больше никто не получит. В данный момент я решаю, как разрешить использовать нескольким экзеплярам один порт. Как решу — выложу обновление.