LINUX.ORG.RU

Скачивание файла с GETом

 ,


0

1

Доброго дня господам ЛОРа
Кто владеет сабж-инструментом:
Хочу скачать конфиг железки, генериться он с передачи нужного get-а
Никак не выходит передать нужные данные, для генерации.

Имею:

agent.pluggable_parser.default = Mechanize::FileSaver
agent.get("https://#{ip}/cgi-bin/config.exp").save("test")
Если забирать wget-ом, то код имеет вид:
wget --no-check-certificate --load-cookies cookie --post-data='submitstatus=1' \
--header='Host: 10.1.25.254' \
--header='User-Agent: Mozilla/5.0' \
--header='Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
--header='Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3' \
--header='Accept-Encoding: gzip, deflate' \
--header='Connection: keep-alive' \
--header='Referer: https://10.1.25.254/sys_setting.htm' \
--header='Content-Type: application/x-www-form-urlencoded' \
--header='Content-Length: 14' \
https://$ip/cgi-bin/config.exp
Буду очень признателен за помощь

Ничего дельного в голову не пришло, но попробуй использовать для таких целей curl.

flareguner ()

--load-cookies cookie

Это как бы намекает на то, что тебе надо делать.

Ну и хедеров проставь.

O02eg ★★★★★ ()
Ответ на: комментарий от O02eg

Это как бы намекает на то, что тебе надо делать.

как ясно из вашего сообщения - с mechanize вы дела не имели
не в куках дело, дело в передаче пост'а «submitstatus=1» по-средствам этого же mechanize (в который уже хранит куки сессии), именно в запросе на закачку файла

Spirit_of_Stallman ★★★ ()
Ответ на: комментарий от flareguner

Ничего дельного в голову не пришло, но попробуй использовать для таких целей curl.

могу и курлом, а могу еще открыть Оперу и скачать в ручную. как это мне поможет?
с тем же, можно просто отдавать из руби - шеллу, вгету, но я не люблю костылей, и привык всё делать по-красоте

Spirit_of_Stallman ★★★ ()
Ответ на: комментарий от Spirit_of_Stallman

Да, обычно или курл, или нативная либа для HTTP.

O02eg ★★★★★ ()

--post-data='submitstatus=1'

Как бы намекает, что тебе нужно было сходить на google://mechanize+post+request и по первой же ссылке увидеть, что вместо

agent.get(«https://#{ip}/cgi-bin/config.exp»)

надо писать

agent.post(«http://#{ip}/cgi-bin/config.exp», {«submitstatus» => «1»})

kim-roader ★★ ()
Ответ на: комментарий от kim-roader

Как бы намекает, что тебе нужно было сходить на google://mechanize+post+request и по первой же ссылке увидеть, что вместо

косвенно - замечание верное, спасибо.
но проблемы, к сожалению не решило.
при любом обращении к нужному аресу, отбивает ошибкой:

/var/lib/gems/1.8/gems/mechanize-2.4/lib/mechanize/http/agent.rb:291:in `fetch': 400 => Net::HTTPBadRequest for https://31.223.225.133/cgi-bin/config.exp -- unhandled response (Mechanize::ResponseCodeError)
	from /var/lib/gems/1.8/gems/mechanize-2.4/lib/mechanize.rb:407:in `get'
	from /home/lord/Dropbox/work/ruby/ruby_backup/backup.ru:22

никто ли не сталкивался с подобного рода проблемой?

Spirit_of_Stallman ★★★ ()
Ответ на: комментарий от Spirit_of_Stallman

Ну чтобы были куки надо загетать наверное сначала.

zz ★★★★ ()
Ответ на: комментарий от zz

Ну чтобы были куки надо загетать наверное сначала.

безусловно. я не весь скрипт выложил. до действия, что показал - делаеться запрос с авторизацией, сам mechanize собирает в себя куку и с этим можно свободно продолжать действия уже внутри самой железки вот часть, что касается вопроса:

#!/bin/ruby

require 'rubygems'
require 'mechanize'
require 'hpricot'

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

user = "xxx"
pass = "xxx"
auth_key = "xxx"
ip = "xxx"

agent = Mechanize.new
page = agent.get("https://#{ip}/cgi-bin/welcome.cgi")
form = page.forms.first
form.username = user
form.password = Digest::MD5.hexdigest(pass + auth_key)
page = agent.submit form

page = agent.get("https://#{ip}/cgi-bin/config.exp")
form = page.forms.first
agent.pluggable_parser.default = Mechanize::FileSaver
agent.post("https://#{ip}/cgi-bin/config.exp", {"submitstatus" => "1"})

Spirit_of_Stallman ★★★ ()

Проблема решена

Проблема решена.
Японские форумы и гугл-транслейт решили О_о
Если кому будет нужно:
.post(URL,POSTDATA,{'custom-header' => 'custom'})

Spirit_of_Stallman ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.