Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 2000/XP (http://forum.oszone.net/forumdisplay.php?f=6)
-   -   Отправка СМС при простое компьютера более 30 минут и при выходе из простоя (http://forum.oszone.net/showthread.php?t=300035)

Nird 20-05-2015 13:26 2509386

Отправка СМС при простое компьютера более 30 минут и при выходе из простоя
 
Добрый день.
Нарисовалась такая задача. Для контроля работы персонала на удаленных торговых точках необходимо реализовать смс оповещение о простое компьютера более 30 минут.
В принципе стандартный планировщик позволяет выполнять задание только если компьютер простаивает более n секунд. Это по большей части подходит. Но как отправить php GET запрос из cmd ума не приложу. Ставить на каждую клиентскую машину вэб сервер, разумеется, смысла нет никакого. Более того, нужно реализовать еще и отправку e-mail при начале простоя более 30 минут и при выходе из простоя.

Некоторые СМС шлюзы позволяют отправлять смс-ки через API по средствам письма. Т.е. в теории можно убить двух зайцев одним письмом. Отсюда вопросы:

1. Как отправлять e-mail сообщения из cmd?[решено]
2. Как отследить и выполнить отправку сообщения при выходе из простоя?

ну и как альтернатива: как отправить php GET запрос из cmd? [решено]

Nird 20-05-2015 13:32 2509389

И вот еще какой вопрос.

Если задание выполнится один раз, следовательно в этот день задание выполняться уже не будет, что не правильно вовсе.

Может есть какой софт, вроде ActualSpy. В нем я не нашел регистрацию простоя в логах, да и отправки сообщения при определенных событиях он тоже не умеет.

Iska 20-05-2015 13:56 2509398

Nird, запрос не бывает «php».

Цитата:

Цитата Nird
1. Как отправлять e-mail сообщения из cmd? »

«sendemail», скриптом на WSH/PowerShell.

Nird 20-05-2015 14:02 2509405

Цитата:

Цитата Iska
запрос не бывает «php». »

Под php GET запросом я подразумевал именно GET запрос средствами PHP. Поскольку в запросе используется функция похапэ urlencode иначе текст сообщение в GET просто не всунуть.

Iska 20-05-2015 14:30 2509414

Цитата:

Цитата Nird
иначе текст сообщение в GET просто не всунуть »

Но зачем тут нужен именно php? Есть WSH, PoSH.

Nird 20-05-2015 15:48 2509438

Цитата Iska:
Есть WSH, PoSH. »
Честно признаться я понятия не имел что тот же PS может отправить get.

Отправка GET запроса средствами PS нашел тут
Код:

$msg = Read-Host -Prompt "Enter message"
$encmsg = [System.Web.HttpUtility]::UrlEncode($msg)
Invoke-WebRequest -Uri "http://smsserver/SNSManager/msgSend.jsp?uid&to=smartsms:*+001XXXXXX&msg=$encmsg&encoding=windows-1255"

На данный момент есть готовая реализация отправки сообщения средствами ps

Распишу тут, может кому пригодится.

1. Качаем powerShell
PowerShell для Win XP sp3
PowerShell для Win XP sp2
После установки запускаем Пуск - выполнить - powershell и вводим команду Set-ExecutionPolicy remotesigned #Эта команда разрешает выполнение ненадежных скриптов

2. Берем скрипт отправки письма
Я нашел этот

3. Ну и создаем батник вида
Код:

>powershell C:\send-mail.ps1 -server smtp.mail.ru -from mail@mail.ru -to mail@mail.ru -body 'Текст письма' -subject 'Тема'
По большому счету этого достаточно. Есть смс шлюзы которые предоставляют возможность отправки смс через email

Остался один вопрос. Это отправка сообщения при выходе из простоя. Как и чем можно это реализовать?

Iska 20-05-2015 16:10 2509447

Цитата:

Цитата Nird
Остался один вопрос. Это отправка сообщения при выходе из простоя. Как и чем можно это реализовать? »

По сути, вопрос иной — есть ли возможность отследить выход из «простоя». Я так понимаю.

Nird 20-05-2015 16:18 2509448

Цитата:

Цитата Iska
есть ли возможность отследить выход из «простоя». Я так понимаю. »

По сути, да.

Опиум 20-05-2015 17:39 2509470

вопрос чуть в сторону.
при таком запросе, имя агента $_SERVER['HTTP_USER_AGENT'], которое увидит web сервер -пустое, надо полагать...
можно ли его както задать?

Nird 20-05-2015 17:44 2509472

Цитата:

Цитата Опиум
можно ли его както задать? »

Я конечно еще толком не разбирался но по ссылке есть второй пример, похоже это как раз то что нужно:
Код:

$wc = New-Object system.Net.WebClient;
$sms = Read-Host "Enter SMS text";
$sms = [System.Web.HttpUtility]::UrlEncode($sms);
$smsResult = $wc.downloadString("http://smsserver/SNSManager/msgSend.jsp?uid&to=smartsms:*+001XXXXXX&msg=$sms&encoding=windows-1255")


Iska 20-05-2015 18:37 2509489

Цитата:

Цитата Опиум
можно ли его както задать? »

WebClient - класс (System.Net)WebClient.Headers - свойство (System.Net).

Пример задания заголовка «user-agent» приведён непосредственно по первой ссылке.

Опиум 21-05-2015 13:17 2509786

Спасибо, на ps получилось, а вот на vbs что-то не катит:
Типа Microsoft VBScript runtime error: Class not defined: 'WebClient'

Iska 21-05-2015 13:44 2509803

Цитата:

Цитата Опиум
а вот на vbs что-то не катит: »

Угу. Это ж не Automation, а .Net (хотя, справедливости ради, отмечу, что некоторые классы .Net, зарегистрированные и как Automation, можно пользовать и в VBScript).

Опиум 22-05-2015 12:31 2510169

Iska, а как это реализовать?

Iska 22-05-2015 14:29 2510220

Например, так: VBScript Scripting Techniques: ArrayLists — класс .Net ArrayList Class (System.Collections) доступен также как объект Automation «System.Collections.ArrayList». Есть и другие (причём, некоторые потребно будет регистрировать самому).


Время: 20:13.

Время: 20:13.
© OSzone.net 2001-