Показать полную графическую версию : Отправка СМС при простое компьютера более 30 минут и при выходе из простоя
Добрый день.
Нарисовалась такая задача. Для контроля работы персонала на удаленных торговых точках необходимо реализовать смс оповещение о простое компьютера более 30 минут.
В принципе стандартный планировщик позволяет выполнять задание только если компьютер простаивает более n секунд. Это по большей части подходит. Но как отправить php GET запрос из cmd ума не приложу. Ставить на каждую клиентскую машину вэб сервер, разумеется, смысла нет никакого. Более того, нужно реализовать еще и отправку e-mail при начале простоя более 30 минут и при выходе из простоя.
Некоторые СМС шлюзы позволяют отправлять смс-ки через API по средствам письма. Т.е. в теории можно убить двух зайцев одним письмом. Отсюда вопросы:
1. Как отправлять e-mail сообщения из cmd?[решено (http://forum.oszone.net/post-2509438.html#post2509438)]
2. Как отследить и выполнить отправку сообщения при выходе из простоя?
ну и как альтернатива: как отправить php GET запрос из cmd? [решено (http://forum.oszone.net/post-2509438.html#post2509438)]
И вот еще какой вопрос.
Если задание выполнится один раз, следовательно в этот день задание выполняться уже не будет, что не правильно вовсе.
Может есть какой софт, вроде ActualSpy. В нем я не нашел регистрацию простоя в логах, да и отправки сообщения при определенных событиях он тоже не умеет.
Nird, запрос не бывает «php».
1. Как отправлять e-mail сообщения из cmd? »
«sendemail», скриптом на WSH/PowerShell.
запрос не бывает «php». »
Под php GET запросом я подразумевал именно GET запрос средствами PHP. Поскольку в запросе используется функция похапэ urlencode иначе текст сообщение в GET просто не всунуть.
иначе текст сообщение в GET просто не всунуть »
Но зачем тут нужен именно php? Есть WSH, PoSH.
Цитата Iska:
Есть WSH, PoSH. »
Честно признаться я понятия не имел что тот же PS может отправить get.
Отправка GET запроса средствами PS нашел тут (http://stackoverflow.com/questions/13935218/how-to-use-http-get-in-powershell)
$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 (https://www.microsoft.com/ru-RU/download/details.aspx?id=16818)
PowerShell для Win XP sp2 (https://www.microsoft.com/en-us/download/details.aspx?id=7217)
После установки запускаем Пуск - выполнить - powershell и вводим команду Set-ExecutionPolicy remotesigned #Эта команда разрешает выполнение ненадежных скриптов
2. Берем скрипт отправки письма
Я нашел этот (https://xaegr.wordpress.com/2008/05/22/send-smtpmailps1_v2/)
3. Ну и создаем батник вида
>powershell C:\send-mail.ps1 -server smtp.mail.ru -from mail@mail.ru -to mail@mail.ru -body 'Текст письма' -subject 'Тема'По большому счету этого достаточно. Есть смс шлюзы которые предоставляют возможность отправки смс через email
Остался один вопрос. Это отправка сообщения при выходе из простоя. Как и чем можно это реализовать?
Остался один вопрос. Это отправка сообщения при выходе из простоя. Как и чем можно это реализовать? »
По сути, вопрос иной — есть ли возможность отследить выход из «простоя». Я так понимаю.
есть ли возможность отследить выход из «простоя». Я так понимаю. »
По сути, да.
вопрос чуть в сторону.
при таком запросе, имя агента $_SERVER['HTTP_USER_AGENT'], которое увидит web сервер -пустое, надо полагать...
можно ли его както задать?
можно ли его както задать? »
Я конечно еще толком не разбирался но по ссылке есть второй пример, похоже это как раз то что нужно:
$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")
можно ли его както задать? »
WebClient - класс (System.Net) (https://msdn.microsoft.com/ru-ru/library/system.net.webclient(v=vs.110).aspx) → WebClient.Headers - свойство (System.Net) (https://msdn.microsoft.com/ru-ru/library/system.net.webclient.headers(v=vs.110).aspx).
Пример задания заголовка «user-agent» приведён непосредственно по первой ссылке.
Спасибо, на ps получилось, а вот на vbs что-то не катит:
Типа Microsoft VBScript runtime error: Class not defined: 'WebClient'
а вот на vbs что-то не катит: »
Угу. Это ж не Automation, а .Net (хотя, справедливости ради, отмечу, что некоторые классы .Net, зарегистрированные и как Automation, можно пользовать и в VBScript).
Iska, а как это реализовать?
Например, так: VBScript Scripting Techniques: ArrayLists (http://www.robvanderwoude.com/vbstech_data_arraylist.php) — класс .Net ArrayList Class (System.Collections) (https://msdn.microsoft.com/en-us/library/system.collections.arraylist(v=vs.110).aspx) доступен также как объект Automation «System.Collections.ArrayList». Есть и другие (причём, некоторые потребно будет регистрировать самому).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.