Скриптик для ленивых, для отправки sms из под linux.
1.Копируем в файл send_sms.sh
2.Меняем значения login,password в начале файла
3.Ставим права chmod u+x send_sms.sh
4.Если php установлен по другому пути нежели /usr/bin/php - корректируем 1ю строчку
Запуск:
./send_sms.sh 79991234567 С днем рождения, скрипт!
5.Если кодировка полученного сообщения отличается от ожидаемого - правим значение charset.
- Код: Выделить всё
#!/usr/bin/php
<?php
$login="aaaaaaaa"; // логин в системе comtube
$password="12345678"; // пароль
$from="nagios"; // имя отправителя в каждом sms (не более 11симв)
$charset="utf-8"; // кодировка сообщения
if ( $argc <= 2 ) {
print "Usage: $argv[0] <номер получателя> текст сообщения\n";
exit();
}
$to=$argv[1];
$message="";
for ( $i=2; $i < $argc; $i++ ) {
if ( $message != '' ) {
$message.=" ";
}
$message.=$argv[$i];
}
function BuildUrlParamsWithSignature($params, $password)
{
ksort($params);
$url = '';
if (!is_array($params))
return $url;
foreach($params as $key => $value)
{
$url .= $key . "=" . urlencode($value) . "&";
}
$signature = md5($url . "&password=".urlencode($password));
$url .= "signature=" . $signature;
return $url;
}
$baseurl = "http://api.comtube.ru/scripts/sms_api/sendsms.php";
// Создаем массив и заполняем его параметрами
$params = array();
$params["username"] = $login;
$params["to"] = $to;
$params["message"] = $message;
$params["from"] = $from;
$params["charset"] = $charset;
$params["type"] = "html";
// Создаем подпись к параметрам
$urlparams = BuildUrlParamsWithSignature($params, $password);
// Формируем полный URL для обращения к серверу
$url = $baseurl . "?" . $urlparams;
//echo $url;
//exit;
// Инициализируем curl и отправляем запрос
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
// Анализируем результат
$matches = array();
preg_match("/code:([0-9]+)<br>desc:(.*)<br>crcy:(.*)<br>tariff:([0-9.]+)<br>parts:([0-9]+)<br>sum:([0-9.,]+)<br>/", $data, $matches);
if (count($matches) > 0)
{
$code = $matches[1];
$desc = $matches[2];
$crcy = $matches[3];
$tariff = $matches[4];
$parts = $matches[5];
$sum = $matches[6];
if ($code != 200)
{
// При обработке запроса произошла ошибка
echo "Failed to send sms, reason: " . $desc . " (" . $code . ")\n";
}
else
{
// Успешное выполнение запроса
//echo "SMS sent successfully\n"; -- удалено, т.к. ответ читать некому.
}
}
else
{
// Получен неправильный ответ от сервера
echo "Invalid result\n";
}
?>