[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: передать через php в скрипт *.sh переменную
logic
Всем привет,
может кто знает как работать с .sh фаилом?

Необходимо через PHP отправлять скрипту в цикле переменную TO=“номер адресата”(номеров будет порядка 10шт, всегда разные) и запускать этот скрипт. Все остальные переменные - статичные. Оператор этой услуги сказал, что скрипт можно запускать один номер=один раз скрипт. Т.е. передать сразу массив из номеров в один скрипт не получится.
в гуугл нашел такую вещь как
stream_context_create($options);
но как с ней работать не догоняю.

скрипт в sh фаиле ниже. Скрипт отправляет мультиСМС

USER=“имя”
PWD=“пароль”
FROM=“телефон или имя”
TO=“номер адресата”
MSG=“содержание сообщения”
HOST="адрес хоста с которого непосредственно уходит смс"

soap="<soap:Envelope xmlns:soap=\"http://schemas........\" xmlns:wsse=\"http://......\">
<soap:Header>
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>${USER}</wsse:Username>
<wsse:Password>${PWD}</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap:Header>
<soap:Body>
<sendSmsWithReport xmlns=
\"http://....">
<addresses>
receiver:${TO}</addresses>
<senderName>
sender:${FROM}</senderName>
<charging />
<message>
<![CDATA[${MSG}]]></message>
<notificationType>
0</notificationType>
<isFlash>
false</isFlash>
</sendSmsWithReport>
</soap:Body>
</soap:Envelope>
"

#echo $soap

curl --data "$soap" -H 'Content-Type: text/xml;charset=UTF-8' -H 'SOAPAction: ""' "$HOST"
killer8080
Цитата (logic @ 9.04.2015 - 11:43)
Необходимо через PHP отправлять скрипту в цикле переменную TO=“номер адресата”

в твоем скрипте эта переменная захардкодена, как ты её собрался передавать? Или реальный скрипт выглядит иначе? Должно быть что то типа
TO=“$1”
тогда можно будет запускать скрипт так
./script.sh 222


Вообще какой смысл дергать шелл, когда можно реализовать это на PHP?
logic
killer8080
Цитата

в твоем скрипте эта переменная захардкодена, как ты её собрался передавать? Или реальный скрипт выглядит иначе? Должно быть что то типа
TO=“$1”
да именно так!

я честно сказать не знаю...мне прислали этот документ шеловский, и сказали вот через этот протокол можешь рассылать смс. или через админ панель (руками). А у меня в mysql через саит приходят каждый день новые номера, на которые надо посылать информацию различную.

Если ты можешь, то подскажи как это на пхп возможно реализовать?
logic
killer8080
покопался в гуугле, написал такой скрипт, но что-то видимо не работает?

<?php
header('Content-Type: text/html; charset=utf-8');
$url = 'http://страница.ру/send_multi_sms.sh';
$data = array('$1' => 'имяпользователя','$2' => 'пароль','$3' => 'моиномеротправителя','$4' => 'номерполучаетля','$5' => 'Test message');

// use key 'http' even if you send the request to https://...
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
),
);

$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);


echo $result;


при обращении к странице, в браузер выводится вся информация из фаила, а смс не посылается.
killer8080
logic
ну вообще консольный скрипт из PHP запускается иначе, для этого есть несколько функций
$number = '71234567';
system("/path/to/script.sh ". escapeshellarg($number));

скрипт естественно должен иметь права на выполнение, если нет, тогда
system("/bin/sh /path/to/script.sh ". escapeshellarg($number));
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.