Перейти к содержимому


Фото
- - - - -

Отправка сообщений посредвством drweb c командной строки


  • Please log in to reply
71 ответов в этой теме

#21 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 855 Сообщений:

Отправлено 20 Октябрь 2016 - 19:34

UTF8 пробовали? Это единственная кодировка, с которой оно в принципе могло бы работать.


Семь раз отрежь – один раз проверь

#22 rivaldo89

rivaldo89

    Newbie

  • Posters
  • 13 Сообщений:

Отправлено 21 Октябрь 2016 - 10:16

UTF8 пробовали? Это единственная кодировка, с которой оно в принципе могло бы работать.

пробовал chcp 65001 - это вроде как и есть UTF8. Может как-то самим curl'ом можно завернуть это в utf-8? Пробовал им, но пока не раздуплю как правильно это сделать. У него за это отвечает как я понял параметр -d и --data-urlencode. Но что-то никак не выходит, то ошибка, то без результата



#23 chs

chs

    Member

  • Posters
  • 249 Сообщений:

Отправлено 21 Октябрь 2016 - 10:36

Вот тут ответ - https://forum.drweb.com/index.php?showtopic=319996#entry751669



#24 rivaldo89

rivaldo89

    Newbie

  • Posters
  • 13 Сообщений:

Отправлено 21 Октябрь 2016 - 10:52

так вот в том и беда.. не могу грамотно завернуть в URLEncode. Не пойму как что-то



#25 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 855 Сообщений:

Отправлено 21 Октябрь 2016 - 11:40

-d и --data-urlencode тут не нужно, потому что это HTTP POST.

Можно посмотреть с флагом -v, что там вообще уходит, и плясать от этого. Или по логам серверам посмотреть, что приходит.


Семь раз отрежь – один раз проверь

#26 rivaldo89

rivaldo89

    Newbie

  • Posters
  • 13 Сообщений:

Отправлено 26 Октябрь 2016 - 09:54

сделал с флагом -V c разными кодировками, что можете сказать? ВО всех трех случаях сообщение доставляется с ??????? вместо русских букв

chcp 1251
Текущая кодовая страница: 1251

C:\curl>curl -u admin:Password -k -v "http://localhost:9080/api/3.0/station
s/send-message.ds?id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx&message=Проверка"
*   Trying localhost...
* TCP_NODELAY set
* Connected to localhost (localhost) port 9080 (#0)
* Server auth using Basic with user 'admin'
> GET /api/3.0/stations/send-message.ds?id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx&
message=Проверка HTTP/1.1
> Host: localhost:9080
> Authorization: Basic YWRtaW46QmZ3ITU0OTA2
> User-Agent: curl/7.50.3
> Accept: */*
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Length: 381
< Content-Type: text/xml; charset=utf-8
< Date: Mon, 24 Oct 2016 09:27:08 GMT
< Keep-Alive: timeout=15
< Last-Modified: Mon, 24 Oct 2016 09:27:08 GMT
< Server: DrWebEnterpriseServer/REL-600-6.00.4.201211200 Windows_Server 2003/x86
 Lua/5.1.4 OpenSSL/0.9.8t
<
<?xml version="1.0" encoding="utf-8"?><drweb-es-api api_build='201206051' api_ve
rsion='3.1.7' local_timestamp='1477312028' operation='stations-send-message' ser
ver='localhost' srv_branch='REL-600' srv_version='6.00.4.201211200' status='
true' timestamp='1477301228'><stations total='1'><station id=xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxstatus='true'/></stations></drweb-es-api>* Curl_http_done: c
alled premature == 0
* Connection #0 to host localhost left intact

chcp 65001
Active code page: 65001

C:\curl>curl -u admin:Password -k -v "http://localhost:9080/api/3.0/station
s/send-message.ds?id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx&message=��������"
*   Trying localhost...
* TCP_NODELAY set
* Connected to localhost (localhost) port 9080 (#0)
* Server auth using Basic with user 'admin'
> GET /api/3.0/stations/send-message.ds?id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx&
message=???????? HTTP/1.1
> Host: localhost:9080
> Authorization: Basic YWRtaW46QmZ3ITU0OTA2
> User-Agent: curl/7.50.3
> Accept: */*
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Length: 381
< Content-Type: text/xml; charset=utf-8
< Date: Mon, 24 Oct 2016 09:22:39 GMT
< Keep-Alive: timeout=15
< Last-Modified: Mon, 24 Oct 2016 09:22:39 GMT
< Server: DrWebEnterpriseServer/REL-600-6.00.4.201211200 Windows_Server 2003/x86
 Lua/5.1.4 OpenSSL/0.9.8t
<
<?xml version="1.0" encoding="utf-8"?><drweb-es-api api_build='201206051' api_ve
rsion='3.1.7' local_timestamp='1477311759' operation='stations-send-message' ser
ver='localhost' srv_branch='REL-600' srv_version='6.00.4.201211200' status='
true' timestamp='1477300959'><stations total='1'><station id=xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxstatus='true'/></stations></drweb-es-api>* Curl_http_done: c
alled premature == 0
* Connection #0 to host localhost left intact

C:\curl>curl -u admin:Password -k -v "http://localhost:9080/api/3.0/station
s/send-message.ds?id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx&message=╧ЁютхЁър"
*   Trying localhost...
* TCP_NODELAY set
* Connected to localhost (localhost) port 9080 (#0)
* Server auth using Basic with user 'admin'
> GET /api/3.0/stations/send-message.ds?id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx&
message=│ЁютхЁър HTTP/1.1
> Host: localhost:9080
> Authorization: Basic YWRtaW46QmZ3ITU0OTA2
> User-Agent: curl/7.50.3
> Accept: */*
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Length: 381
< Content-Type: text/xml; charset=utf-8
< Date: Mon, 24 Oct 2016 08:56:19 GMT
< Keep-Alive: timeout=15
< Last-Modified: Mon, 24 Oct 2016 08:56:19 GMT
< Server: DrWebEnterpriseServer/REL-600-6.00.4.201211200 Windows_Server 2003/x86
 Lua/5.1.4 OpenSSL/0.9.8t
<
<?xml version="1.0" encoding="utf-8"?><drweb-es-api api_build='201206051' api_ve
rsion='3.1.7' local_timestamp='1477310179' operation='stations-send-message' ser
ver='localhost' srv_branch='REL-600' srv_version='6.00.4.201211200' status='
true' timestamp='1477299379'><stations total='1'><station id=xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxstatus='true'/></stations></drweb-es-api>* Curl_http_done: c
alled premature == 0
* Connection #0 to host localhost left intact


Сообщение было изменено rivaldo89: 26 Октябрь 2016 - 09:56


#27 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 855 Сообщений:

Отправлено 26 Октябрь 2016 - 14:16

Греп по курловому мануалу дал нечто такое:

curl -u admin:Password -k -v -G --data-urlencode id=x --data-urlencode message=Проверка "http://localhost:9080/api/3.0/stations/send-message.ds"

И это не отменяет необходимости использовать utf8 тут.


Семь раз отрежь – один раз проверь

#28 rivaldo89

rivaldo89

    Newbie

  • Posters
  • 13 Сообщений:

Отправлено 26 Октябрь 2016 - 15:40

Греп по курловому мануалу дал нечто такое:

curl -u admin:Password -k -v -G --data-urlencode id=x --data-urlencode message=Проверка "http://localhost:9080/api/3.0/stations/send-message.ds"

И это не отменяет необходимости использовать utf8 тут.

к сожалению и таким способом не пропускает русские символы. Даже указывая кодировку в cmd chcp 65001 и другие. Не пойму вообще в чем косяк, хоть убей, вместо русских символов - "??????????"


Сообщение было изменено rivaldo89: 26 Октябрь 2016 - 15:41


#29 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 855 Сообщений:

Отправлено 26 Октябрь 2016 - 15:44

Что в вербозном выводе курла?


Семь раз отрежь – один раз проверь

#30 rivaldo89

rivaldo89

    Newbie

  • Posters
  • 13 Сообщений:

Отправлено 26 Октябрь 2016 - 16:16

Что в вербозном выводе курла?

вот
 

C:\curl>curl -u admin:Password -k -v -G --data-urlencode id=xxxxxxxx
xxxxxxxx --data-urlencode message=╧ЁютхЁър "http://localhost:9080/a
pi/3.0/stations/send-message.ds"
*   Trying localhost...
* TCP_NODELAY set
* Connected to localhost (localhost) port 9080 (#0)
* Server auth using Basic with user 'admin'
> GET /api/3.0/stations/send-message.ds?id=xxxxxxxxxxxxxxxx&
message=%A6%A8%FE%F2%F5%A8%FA%F0 HTTP/1.1
> Host: localhost:9080
> Authorization: Basic YWRtaW46QmZ3ITU0OTA2
> User-Agent: curl/7.50.3
> Accept: */*
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Length: 381
< Content-Type: text/xml; charset=utf-8
< Date: Wed, 26 Oct 2016 13:10:13 GMT
< Keep-Alive: timeout=15
< Last-Modified: Wed, 26 Oct 2016 13:10:13 GMT
< Server: DrWebEnterpriseServer/REL-600-6.00.4.201211200 Windows_Server 2003/x86
 Lua/5.1.4 OpenSSL/0.9.8t
<
<?xml version="1.0" encoding="utf-8"?><drweb-es-api api_build='201206051' api_ve
rsion='3.1.7' local_timestamp='1477498213' operation='stations-send-message' ser
ver='localhost' srv_branch='REL-600' srv_version='6.00.4.201211200' status='
true' timestamp='1477487413'><stations total='1'><station id='xxxxxxxx
-xxxxxxxx' status='true'/></stations></drweb-es-api>* Curl_http_done: c
alled premature == 0
* Connection #0 to host localhost left intact

chcp 1251
Текущая кодовая страница: 1251

C:\Users\User\Desktop>CD C:\curl

C:\curl>curl -u admin:Password -k -v -G --data-urlencode id=xxxxxxxx
xxxxxxxx --data-urlencode message=Проверка "http://localhost:9080/a
pi/3.0/stations/send-message.ds"
*   Trying localhost...
* TCP_NODELAY set
* Connected to localhost (localhost) port 9080 (#0)
* Server auth using Basic with user 'admin'
> GET /api/3.0/stations/send-message.ds?id=xxxxxxxxxxxxxxxx&
message=%CF%F0%EE%E2%E5%F0%EA%E0 HTTP/1.1
> Host: localhost:9080
> Authorization: Basic YWRtaW46QmZ3ITU0OTA2
> User-Agent: curl/7.50.3
> Accept: */*
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Length: 381
< Content-Type: text/xml; charset=utf-8
< Date: Wed, 26 Oct 2016 13:10:40 GMT
< Keep-Alive: timeout=15
< Last-Modified: Wed, 26 Oct 2016 13:10:40 GMT
< Server: DrWebEnterpriseServer/REL-600-6.00.4.201211200 Windows_Server 2003/x86
 Lua/5.1.4 OpenSSL/0.9.8t
<
<?xml version="1.0" encoding="utf-8"?><drweb-es-api api_build='201206051' api_ve
rsion='3.1.7' local_timestamp='1477498240' operation='stations-send-message' ser
ver='localhost' srv_branch='REL-600' srv_version='6.00.4.201211200' status='
true' timestamp='1477487440'><stations total='1'><station id='xxxxxxxx
-xxxxxxxx' status='true'/></stations></drweb-es-api>* Curl_http_done: c
alled premature == 0
* Connection #0 to host localhost left intact

chcp 65001
Active code page: 65001

C:\Users\User\Desktop>CD C:\curl

C:\curl>curl -u admin:Password -k -v -G --data-urlencode id=xxxxxxxx
xxxxxxxx --data-urlencode message=�������� "http://localhost:9080/a
pi/3.0/stations/send-message.ds"
*   Trying localhost...
* TCP_NODELAY set
* Connected to localhost (localhost) port 9080 (#0)
* Server auth using Basic with user 'admin'
> GET /api/3.0/stations/send-message.ds?id=xxxxxxxxxxxxxxxx&
message=%3F%3F%3F%3F%3F%3F%3F%3F HTTP/1.1
> Host: localhost:9080
> Authorization: Basic YWRtaW46QmZ3ITU0OTA2
> User-Agent: curl/7.50.3
> Accept: */*
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Length: 381
< Content-Type: text/xml; charset=utf-8
< Date: Wed, 26 Oct 2016 13:11:16 GMT
< Keep-Alive: timeout=15
< Last-Modified: Wed, 26 Oct 2016 13:11:16 GMT
< Server: DrWebEnterpriseServer/REL-600-6.00.4.201211200 Windows_Server 2003/x86
 Lua/5.1.4 OpenSSL/0.9.8t
<
<?xml version="1.0" encoding="utf-8"?><drweb-es-api api_build='201206051' api_ve
rsion='3.1.7' local_timestamp='1477498276' operation='stations-send-message' ser
ver='localhost' srv_branch='REL-600' srv_version='6.00.4.201211200' status='
true' timestamp='1477487476'><stations total='1'><station id='xxxxxxxx
-xxxxxxxx' status='true'/></stations></drweb-es-api>* Curl_http_done: c
alled premature == 0
* Connection #0 to host localhost left intact



#31 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 855 Сообщений:

Отправлено 26 Октябрь 2016 - 16:23

Очевидно, что из консоли в curl приходит уже нечто кривое. Понятия не имею, как это сделать из виндового терминала, чтобы пользовательский ввод конвертился в юникод, но могу предложить попробовать bat'ник, который уже сохранён в utf8.


Семь раз отрежь – один раз проверь

#32 Kirill Polubelov

Kirill Polubelov

    Hr. Schreibikus

  • Dr.Web Staff
  • 4 362 Сообщений:

Отправлено 26 Октябрь 2016 - 16:32

Из виндовой консоли, в которой 866, думаю, ничего кроме 866, никогда, и не уйдет нормально.


(exit 0)

#33 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 26 Октябрь 2016 - 16:37

Может уже поставить git bash или cygwin и не мучаться? Внутри обоих есть curl. На худой конец скриптом энкодить строку в utf8 и urlencode.

#34 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 855 Сообщений:

Отправлено 26 Октябрь 2016 - 16:56

Из виндовой консоли, в которой 866, думаю, ничего кроме 866, никогда, и не уйдет нормально.

Ну почему, вот 1251 оттуда как-то уходит. Зато 866 в последней попытке сломалась. Подозреваю, может просто потребоваться определённая ловкость рук.


Семь раз отрежь – один раз проверь

#35 Kirill Polubelov

Kirill Polubelov

    Hr. Schreibikus

  • Dr.Web Staff
  • 4 362 Сообщений:

Отправлено 26 Октябрь 2016 - 17:01

cygwin

Хорошая идея, там и iconv есть, если совсем надо.

 

Может, еще в PowerShell всё получится. По идее, считай что штатная тема в Шindows.


(exit 0)

#36 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 26 Октябрь 2016 - 17:11

Из cygwin:
$ curl -u admin:pass -k -v -G --data-urlencode id=6095deea-d11d-b211-a268-b00113a0deaa --data-urlencode message=Проверка123 "http://server:9080/api/3.0/stations/send-message.ds" -v
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 192.168.0.16...
* Connected to server (192.168.0.16) port 9080 (#0)
* Server auth using Basic with user 'admin'
> GET /api/3.0/stations/send-message.ds?id=6095deea-d11d-b211-a268-b00113a0deaa&message=%CF%F0%EE%E2%E5%F0%EA%E0123 HTTP/1.1
> Host: server:9080
> Authorization: Basic YWRtaW46YWRtaW4=
> User-Agent: curl/7.50.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Length: 286
< Content-Type: text/xml; charset=utf-8
< Date: Wed, 26 Oct 2016 14:08:17 GMT
< Keep-Alive: timeout=15
< Last-Modified: Wed, 26 Oct 2016 14:08:17 GMT
< Server: DrWebServer/REL-1000-10.00.0.201507030 Windows_Server 2008 R2/x64 Lua/5.1.4 OpenSSL/1.0.1n zlib/1.2.8 UNICODE/52.1
< x-drweb-api-status: true
< X-DrWeb-API-Version: 40003
< X-DrWeb-Srv: b80e2fd8-7deb-2564-7399-5ab43f5dbe43
< X-DrWeb-Srv-Type: ESuite
< X-DrWeb-Srv-Version: 1000201608110
<
{ [286 bytes data]
100   286  100   286    0     0   1079      0 --:--:-- --:--:-- --:--:--  1079       
Че-то правда не utf-8.

#37 Konstantin Yudin

Konstantin Yudin

    Смотрящий

  • Dr.Web Staff
  • 19 552 Сообщений:

Отправлено 26 Октябрь 2016 - 17:15

а винда какая?
With best regards, Konstantin Yudin
Doctor Web, Ltd.

#38 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 26 Октябрь 2016 - 17:19

cygwin

Хорошая идея, там и iconv есть, если совсем надо.
Может, еще в PowerShell всё получится. По идее, считай что штатная тема в Шindows.

Точно! iconv рекодит. Наверное и под Windows его можно найти.
Powershell был бы самый занятный вариант.

Жесть конечно, но работает, но только в cygwin и git bash
$ curl -u admin:admin -k -v -G --data-urlencode id=6095deea-d11d-b211-a268-b00113a0deaa --data-urlencode message=`echo Проверка123|iconv -f cp1251 -t utf-8` "http://pdc-server:9080/api/3.0/stations/send-message.ds"
> GET /api/3.0/stations/send-message.ds?id=6095deea-d11d-b211-a268-b00113a0deaa&message=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0123 HTTP/1.1

Сообщение было изменено IlyaS: 26 Октябрь 2016 - 17:23


#39 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 26 Октябрь 2016 - 17:21

а винда какая?

Если вопрос мне, то 7-ка.

#40 SergSG

SergSG

    The Master

  • Posters
  • 14 425 Сообщений:

Отправлено 26 Октябрь 2016 - 18:06

Подозреваю, может просто потребоваться определённая ловкость рук.

А может еще потребоваться поставить в системе определенный язык по дефолту и кодировку для неюникода.




Читают тему: 0

0 пользователей, 0 гостей, 0 скрытых