SOAP

Скрипты PHP, PERL и т.п. помогающие управлять сетью

SOAP

Сообщение dimondack » 08 ноя 2016, 13:59

Всем привет
Есть станция SI3000 с интерфейсом - openMN
Через этот интерфейс станцией может управлять стороннее приложение.


В простых запросах это выглядит вот так

набираю в браузере http://10.115.1.3/openmn/test

запрос авторизации
ввожу логин пароль
открывается простейший вид

выбираю свой сервис
ввожу запрос
Request:
<modifySubscriberSupplementaryServiceSet>
<subscriber node="20009" areaCode="47239" dn="29990" supplSrvSetId="" />
</modifySubscriberSupplementaryServiceSet>

Нижимаю OK

получаю ответ
Response:
<modifySubscriberSupplementaryServiceSetResponse>
<subscriber areaCode="47239" dn="29990" node="20009" supplSrvSetId="" supplSrvSetName="Custom"/>
</modifySubscriberSupplementaryServiceSetResponse>


Смысл вышеописанного:
нужно абоненту изменить параметр supplSrvSetId
казалось бы какие мелочи

Но у меня их 20388 штук :)

Может кто подсказать как их всех пропустить через этот запрос махом, ну или почти


html страницы
Код: Выделить всё
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>OpenMN Test</title>
</head>
<body>
<form action="" method="post">
<p>Select service
    <select name="service">
         <option value="OpenMnsGenericWebService">OpenMnsGeneric Web Service
         </option><option value="OpenMnsWebService">OpenMns Web Service
         </option><option value="BBInventoryWebService">BB Inventory Web Service
         </option><option value="BBAssuranceWebService">BB Assurance Web Service
         </option><option value="BBProvisioningWebService">BB Provisioning Web Service
         </option><option value="BBMultiserviceAccessWebService">BB Multiservice Acccess Web Service
         </option><option value="NBAssuranceWebService">NB Assurance Web Service
         </option><option selected="selected" value="NBProvisioningWebService">NB Provisioning Web Service
         </option><option value="OpenMnWebService">Internal OpenMN Web Service
         </option><option value="ModemsWebService">Modems Web Service
         </option><option value="ControlPlaneInventoryWebService">Control Plane Inventory Web Service
         </option><option value="TestWebService">Test Web Service
         </option><option value="123">123

    </option></select>
</p>
Request:<br>
<textarea name="request" cols="95" rows="12">&lt;modifySubscriberSupplementaryServiceSet&gt;
&lt;subscriber node="20009"  areaCode="47239" dn="29990" supplSrvSetId="" /&gt;
&lt;/modifySubscriberSupplementaryServiceSet&gt;
</textarea>
<p><input value="OK" type="submit">
</p></form>
<br><br> Response:<br>
<textarea name="response" cols="95" rows="12">&lt;modifySubscriberSupplementaryServiceSetResponse&gt;
  &lt;subscriber areaCode="47239" dn="29990" node="20009" supplSrvSetId="" supplSrvSetName="Custom"/&gt;
&lt;/modifySubscriberSupplementaryServiceSetResponse&gt;
</textarea>


</body></html>





браузер открыт и не закрывался
можно несколько раз заходить по ссылке без авторизации
Вложения
22.png
в браузере
Нас определяет то, что мы делаем.
Аватара пользователя
dimondack
новичок
 
Сообщения: 71
Зарегистрирован: 21 янв 2015, 13:00

Re: SOAP

Сообщение root » 09 ноя 2016, 08:47

dimondack писал(а):запрос авторизации

Какого типа ?
    HTTP ? Смотреть сюда.
    Форма с логином и паролем ? Смотреть сюда.
    Иное ? Смотреть в F12 -> вкладка network браузера и изучать.
dimondack писал(а):ввожу запрос

Это XML.
dimondack писал(а):как их всех пропустить через этот запрос махом

Написать скрипт, который авторизуется, составит необходимый XML документ и передаст его методом POST на URL, который обрабатывает данные формы. Запускать скрипт через цикл, передавая ему парамы. который нужно подставлять в запросе.

P.S. Для подобной задачи я бы написал php скрипт для CLI.
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1847
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: SOAP

Сообщение dimondack » 09 ноя 2016, 12:06

http://10.115.1.3/openmn/test
в браузере выходит это

Вообщем это реально я так понял
До этого (на другой теме) писал скрипты сбрасывал их на сервер ,
заходил на сервер через браузер и запускал свои скрипты

В данном случае мой комп должен понимать PHP
Я запускаю у себя , к примеру свой index.html, где и расписываю на PHP
подключение к URL c авторизацией и выполнением нужных мне запросов ???
Правильно понимаю..
Вложения
11.png
11
Нас определяет то, что мы делаем.
Аватара пользователя
dimondack
новичок
 
Сообщения: 71
Зарегистрирован: 21 янв 2015, 13:00

Re: SOAP

Сообщение root » 09 ноя 2016, 14:32

dimondack писал(а):в браузере выходит это

Это HTTP, тогда:
root писал(а):Смотреть сюда.

dimondack писал(а):Вообщем это реально я так понял

Да все реально. Вопрос тока времени и, соответственно, цены.
dimondack писал(а):заходил на сервер через браузер и запускал свои скрипты

PHP скрипты могут быть исполнены в CLI (консоль) сервера, если PHP был собран с соответствующей поддержкой:
Код: Выделить всё
 [x] CLI       Build CLI version

Код: Выделить всё
# cat test.php
<?php

unset($argv[0]);
if (count($argv)>0){
    printf("Got params: %s\n",implode(",",$argv));
}else{
    print "No params was given\n";
}

?>

Код: Выделить всё
# whereis php
php: /usr/local/bin/php /usr/local/man/man1/php.1.gz

# /usr/local/bin/php test.php
No params was given

# /usr/local/bin/php test.php aaa bbb ccc
Got params: aaa,bbb,ccc

dimondack писал(а):В данном случае мой комп должен понимать PHP

PHP должен понимать "тот" где будет исполняться скрипт.
dimondack писал(а):к примеру свой index.html, где и расписываю на PHP

.html точно нет (только если не спец настроек HTTP службы), а вот .php да
dimondack писал(а):подключение к URL c авторизацией и выполнением нужных мне запросов

именно так
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1847
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: SOAP

Сообщение Андрей » 16 ноя 2016, 07:01

python + soap клиент.
Обязателен ли soap? Если можно, скажем, snmp использовать.
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Re: SOAP

Сообщение dimondack » 20 ноя 2016, 03:32

Вообщем выкрутился....

Коллеги ещё подбросили на Perl пример

Код: Выделить всё
#!perl -w


use SOAP::Lite +trace=>'debug';
use IO::Socket::SSL;

IO::Socket::SSL::set_defaults(SSL_verify_mode => "SSL_VERIFY_NONE");

$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0;

print SOAP::Lite
  -> uri('urn:iskratel-si:itnbsp-1-0')
  -> proxy('https://login:pass@10.115.1.10/openmn/nb/NBProvisioningWebService')
  -> getSubscriberRequest(SOAP::Data->name(subscriber => '')->attr({'areaCode'=>'3472', 'dn'=>'652800'}))
  -> result;


Затем подсказали скачать клиент SOAP UI
https://www.soapui.org/downloads/soapui.html
подключиться к станции к библиотекам WSDL

в SOAP UI пришлось создать тестовый кейс приложить скрипт на groovy
и я добился того, что одним нажатием мышки выполняется нужный мне запрос
и каждое последующее нажатие увеличивает номер абонента на единицу

Как это всё зациклить , да и подложить свой массив ........
Время........ дорого

Ну, кликать 20 000 раз я не стал конечно, на самом деле вышло бы не 20000, а все 150000
кликов так как инкремент +1 :D :D ,
сколько мышек бы стёр............
долго не думая, нашёл "кликалку" в интернете и менее чем за рабочий день прошёл весь свой ресурс...
Да, и такие методы то же хороши.

А на днях в догонку написал свой вариант на С#
вот выдержка
Код: Выделить всё
public string[] modifySubscriberSupplementaryServiceSet ={
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:iskratel-si:itnbsp-1-0\">" +
   "<soapenv:Header/>" +
   "<soapenv:Body>" +
      "<urn:modifySubscriberSupplementaryServiceSetRequest>",
                "<subscriber   areaCode=\"ndc\" dn=\"dn_sub\" supplSrvSetId=\"\"/>",
      "</urn:modifySubscriberSupplementaryServiceSetRequest>" +
   "</soapenv:Body>" +
"</soapenv:Envelope>"
    };


public string request_03(string areaCode, string dn, string[] _command, string sus, int cnt, int l,  string node)
 {

   HttpWebRequest httpreg = (HttpWebRequest)WebRequest.Create("http://login:pass@10.115.1.3/openmn/nb/NBProvisioningWebService");

     string u = "login";
     string p = "pass";
     string auth = "login:pass";
     httpreg.Credentials = new NetworkCredential(u, p);
     httpreg.Method = "POST";
         httpreg.Headers.Add("Accept-Encoding:gzip,deflate");
     httpreg.ContentType = "text/xml;charset=\"utf-8\"";
     httpreg.Headers.Add("SOAPAction", "getSubscriberSupplementaryServiceSet");
        httpreg.KeepAlive = true;
     httpreg.UserAgent = "Apache-HttpClient/4.1.1 (java 1.5)";
     httpreg.Headers.Add("Authorization", auth);
   
   
     XmlDocument soapEnvelopeXml1 = new XmlDocument();
     soapEnvelopeXml1.LoadXml(_command);
         Stream mystream1 = httpreg.GetRequestStream();
     soapEnvelopeXml1.Save(mystream1);
         WebResponse response1 = httpreg.GetResponse();
     mystream1 = response1.GetResponseStream();
     StreamReader myrd1 = new StreamReader(mystream1);
     string ssr = myrd1.ReadToEnd();

     if (l == cnt) { return ""; }
     this.output_text_rich.Text += ssr + "\r\n" + " " + "\r\n";


     myrd1.Close();
     mystream1.Close();
     return ssr;
 }





Но всё же PHP и веб браузер самый лучший вариант
Нас определяет то, что мы делаем.
Аватара пользователя
dimondack
новичок
 
Сообщения: 71
Зарегистрирован: 21 янв 2015, 13:00

Привет Словенам Привет Братушкам

Сообщение dimondack » 10 апр 2017, 20:01

Все же написал некоторый менеджмент для SI3000
Долго не мог понять почему не работает CURL
пока не проверил вот этим
Код: Выделить всё
 
<?php
    if (function_exists('curl_init')) {
     echo 'Работает';
    } else {
     echo 'Не работает';
    }
    ?>

ну и apt-get install php-curl


в архиве все реально рабочее, только в var свои данные вставить,
ну причесать :D "гениальный" интерфейс
Вложения
44.zip
Мой менеджмент ))
(21.62 Кб) Скачиваний: 209
sch.jpg
схема
Нас определяет то, что мы делаем.
Аватара пользователя
dimondack
новичок
 
Сообщения: 71
Зарегистрирован: 21 янв 2015, 13:00


Вернуться в Программинг и сети

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron