Передача параметра curl'у

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
vaikos
рядовой
Сообщения: 19
Зарегистрирован: 2009-11-14 8:50:53

Передача параметра curl'у

Непрочитанное сообщение vaikos » 2010-04-26 11:21:44

Уважаемые гуру.
У меня не получается передать от'grep'епованный параметр curl'у в скрипте (да и в самом шелле)

Код: Выделить всё

#!/bin/sh
grep -o '[0-9]*' | curl -d "param1=username&param2=$1" http://somedomain.ru/index.php
Сам grep отрабатывает нормально, выдает допустим значение 12345. Мне нужно передать это значение curl'у как param2=12345.
Правильно ли я передаю параметр через param2=$1? Подскажите как правильно сделать такое?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Передача параметра curl'у

Непрочитанное сообщение terminus » 2010-04-26 12:02:52

Код: Выделить всё

#!/bin/sh
grep -o '[0-9]*' | xargs ONE=
curl -d "param1=username&param2=$ONE" http://somedomain.ru/index.php
:unknown:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

vaikos
рядовой
Сообщения: 19
Зарегистрирован: 2009-11-14 8:50:53

Re: Передача параметра curl'у

Непрочитанное сообщение vaikos » 2010-04-26 13:18:11

terminus писал(а):

Код: Выделить всё

#!/bin/sh
grep -o '[0-9]*' | xargs ONE=
curl -d "param1=username&param2=$ONE" http://somedomain.ru/index.php
:unknown:
Спасибо, Ваш вариант работает!!! :drinks:
Заодно я узнал про команду xargs :smile:

Остается интересным почему мой вариант не приносит желаемое :unknown:

Гость
проходил мимо

Re: Передача параметра curl'у

Непрочитанное сообщение Гость » 2010-04-26 13:46:42

можно и без xargs

Код: Выделить всё

#!/bin/sh
curl -d "param1=username&param2=$(grep -o '[0-9]*')" http://somedomain.ru/index.php

vaikos
рядовой
Сообщения: 19
Зарегистрирован: 2009-11-14 8:50:53

Re: Передача параметра curl'у

Непрочитанное сообщение vaikos » 2010-04-26 14:14:17

Гость писал(а):можно и без xargs

Код: Выделить всё

#!/bin/sh
curl -d "param1=username&param2=$(grep -o '[0-9]*')" http://somedomain.ru/index.php
Дык, а как в такой конструкции передать входные данные самому grep'у??? :smile:

У меня в одной строке curl передает инфу grep'у, тот в свою очередь следующему grep'у, а он уже опять curl:pardon:
Т.е.: curl | grep | grep | curl.
И вот второй grep второму curl'у через $1 отдать инфу не может.

Пример с $1 брал из инета, но там был не curl, а awk.
P.S. Два раза использую grep, ибо sed и awk пока раскурить не могу...

vaikos
рядовой
Сообщения: 19
Зарегистрирован: 2009-11-14 8:50:53

Re: Передача параметра curl'у

Непрочитанное сообщение vaikos » 2010-04-26 16:18:25

vaikos писал(а):
terminus писал(а):

Код: Выделить всё

#!/bin/sh
grep -o '[0-9]*' | xargs ONE=
curl -d "param1=username&param2=$ONE" http://somedomain.ru/index.php
:unknown:
Спасибо, Ваш вариант работает!!! :drinks:
Заодно я узнал про команду xargs :smile:

Остается интересным почему мой вариант не приносит желаемое :unknown:
Ниче не понимаю!!! :st:
Ща пишет:

Код: Выделить всё

xargs: ONE=: No such file or directory

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Передача параметра curl'у

Непрочитанное сообщение terminus » 2010-04-26 16:22:24

Код: Выделить всё

#!/bin/sh
grep -o '[0-9]*' | xargs set ONE=
curl -d "param1=username&param2=$ONE" http://somedomain.ru/index.php
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

vaikos
рядовой
Сообщения: 19
Зарегистрирован: 2009-11-14 8:50:53

Re: Передача параметра curl'у

Непрочитанное сообщение vaikos » 2010-04-26 16:34:17

terminus писал(а):

Код: Выделить всё

#!/bin/sh
grep -o '[0-9]*' | xargs set ONE=
curl -d "param1=username&param2=$ONE" http://somedomain.ru/index.php

Код: Выделить всё

pc$ echo "1234567890" | grep -o '[3-8]*' | xargs
345678
pc$

Код: Выделить всё

pc$ echo "1234567890" | grep -o '[3-8]*' | xargs set ONE=
xargs: set: No such file or directory
pc$
:unknown: может у меня че с путями?? Сам set из шелла пускается нормально.

Гость
проходил мимо

Re: Передача параметра curl'у

Непрочитанное сообщение Гость » 2010-04-26 19:07:03

vaikos писал(а):как в такой конструкции передать входные данные самому grep'у?
grep у тя как брал данные со /dev/stdout так и берет
vaikos писал(а):curl | grep | grep | curl
этого нет в исходном сообщении

ps, не знаю что курит terminus

Код: Выделить всё

$ echo blah | xargs ONE=
xargs: ONE=: No such file or directory
$ echo blah | xargs set ONE=
xargs: set: No such file or directory
пробовал на sh, tcsh, bash, zsh. Присвоение значение переменной не является внешней командой, кою можно подсунуть xargs. Да и xargs всегда ставит пробел после команды.

Гость
проходил мимо

Re: Передача параметра curl'у

Непрочитанное сообщение Гость » 2010-04-26 19:09:47

Гость писал(а):как брал данные со /dev/stdout так и берет
пардон, stdin, т.е. напр.
curl блаблабла | твой_скрипт.sh

x6e6564
проходил мимо

Re: Передача параметра curl'у

Непрочитанное сообщение x6e6564 » 2010-04-27 6:52:46

Может так:

Код: Выделить всё

echo curl -d "param1=username&param2=`echo "1234567890" | grep -o '[3-8].*'`" http://somedomain.ru/index.php
curl -d param1=username&param2=34567890 http://somedomain.ru/index.php
т.е.

Код: Выделить всё

#!/bin/sh
curl -d "param1=username&param2=`grep -o '[0-9].*'`" http://somedomain.ru/index.php

vaikos
рядовой
Сообщения: 19
Зарегистрирован: 2009-11-14 8:50:53

Re: Передача параметра curl'у

Непрочитанное сообщение vaikos » 2010-04-27 14:42:18

x6e6564 писал(а):Может так:

Код: Выделить всё

echo curl -d "param1=username&param2=`echo "1234567890" | grep -o '[3-8].*'`" http://somedomain.ru/index.php
curl -d param1=username&param2=34567890 http://somedomain.ru/index.php
т.е.

Код: Выделить всё

#!/bin/sh
curl -d "param1=username&param2=`grep -o '[0-9].*'`" http://somedomain.ru/index.php
Спасибо! Ваш вариант работает! В итоге я сделал так:

Код: Выделить всё

curl -d "param1=username&param2=`curl ... | grep ... | grep -o '[0-9].*'`" http://somedomain.ru/index.php
Т.е. curl читает страницу, страница проходит через двойной grep и полученные данные подсовываются опять curl'у.
Поставленная задача решена, а я уж хотел начать изучать Python для этого :smile: