Представьте себе что-то вроде этого:
$ curlsh http://www.example.org
> GET /foo/bar/bam
...output here...
> POST /thing/pool ...
... result here....
есть ли инструмент, который позволяет мне это сделать?
Во многих системах Linux / Unix ваш псевдокод будет работать в любой оболочке, хотя ваши пути должны быть полными URL-адресами.
Например, в системах Debian на базе, пакет libwww-perl
устанавливает три символические ссылки на LWP-запрос , которые называются /usr/bin/GET
, /usr/bin/HEAD
и /usr/bin/POST
. Они делают то, что вы ожидаете. Последние версии пакета OpenSuse perl-libwww-perl
пропускают символические ссылки (что, вероятно, является ошибкой), поэтому вам придется создавать их самостоятельно или использовать lwp-request
напрямую. В целом и на протяжении многих лет было вполне безопасным предположение, что исполняемые файлы GET, HEAD и POST доступны в системах unixoid.
Конечно, вы могли бы также использовать curl
для всех этих задач, поэтому, возможно, я не понимаю, почему вы чувствуете, что оболочка командной строки, такая как bash, не является интерактивной.
Спасибо за ответы.
Поискав в поиске , я нашел resty , который является оболочкой сценария оболочки для инструмента curl . Это действительно то, чего я хочу. Это 155 строк сценария оболочки, и когда я его запускаю, я получаю функции для GET, PUT, POST, DELETE и OPTIONS. Эти функции - просто обертки вокруг программы curl, найденной на моем пути.
Это работает так на MacOSX Bash:
$ . resty
$ resty https://api.example.org
https://api.myhost.com*
$ GET /v1/o/orgname -u myusername:password
{
"createdAt" : 1347007133508,
"createdBy" : "admin",
"displayName" : "orgname",
"environments" : [ "test", "prod" ],
"lastModifiedAt" : 1347007133508,
"lastModifiedBy" : "admin",
"name" : "orgname",
"properties" : {
"propertyList" : [ ... ]
},
}
$
Первая строка там просто запускает команды в текущей оболочке.
Следующая строка, команда resty, устанавливает базу URL. После этого любой вызов GET, PUT, POST ... неявно ссылается на эту базу. Я показал пример, который испускает предварительно подтвержденный JSON. Я думаю, что если ваш сервер испускает минимизированный JSON, вы можете распечатать его с помощью внешнего скрипта, отправив выходные данные.
Есть поддержка хост-настроек. Предположим, что вашим целевым хостом является api.example.org. Создайте файл с именем ~ / .resty / api.example.org и вставьте туда строки, которые определяют аргументы, которые должны передаваться при каждом вызове curl хосту с этим именем. Каждый глагол http получает свою собственную строку. Итак, вставив этот контент в файл:
GET -u myusername:mypassword --write-out "\nStatus = %{http_code}\n"
... означает , что каждый раз , когда я делаю GET , когда api.example.org является базой имя хоста, команда локон будет неявно использовать -u
и --write-out
показано, арг. (-u для базовой аутентификации).
В качестве другого примера вы можете указать заголовок Accept в этом файле, чтобы всегда запрашивать XML:
GET --header "Accept: application/xml"
Любой аргумент командной строки curl поддерживается в этом файле настроек. Все аргументы curl для кортежа host + verb должны находиться в одной строке в файле настроек.
Handy.
LFTP:
$ lftp http://repo.xplico.org/pool/
cd ok, cwd=/pool
lftp repo.xplico.org:/pool> ls
drwxr-xr-x -- /
drwxr-xr-x - 2012-02-13 09:48 main
lftp repo.xplico.org:/pool> cd main
lftp repo.xplico.org:/pool/main> ls
drwxr-xr-x -- ..
drwxr-xr-x - 2012-02-13 09:48 x
Списки каталогов работают только для сайтов, которые отправляют индексы каталогов. Но даже если они этого не делают, вы все равно можете использовать get
команду для получения отдельных файлов.
get
загрузит файл,cat
выведет файл на экран. Чтобы получить HTTPpost
вы можете использовать что - то вроде:quote post post.php x=1&y=z
.Вы можете использовать Netcat .
Вот пример, чтобы получить домашнюю страницу VLC
Остальная часть HTML выводится на консоль. Примечание: вам нужно напечатать Return дважды после
HTTP/1.0
.источник
Вы можете использовать интерактивные
shells
и сpython
илиperl
:В Perl
См.
perldoc WWW::Mechanize::Shell
Или http://search.cpan.org/~corion/WWW-Mechanize-Shell-0.52/lib/WWW/Mechanize/Shell.pm.В Python :
Смотрите http://wwwsearch.sourceforge.net/mechanize/
источник
Да, вы можете использовать опцию "--config":
Пример:
источник
Мне очень нравится рысь для интерактивного просмотра в командной строке. Это скорее полноценный браузер (который вписывается в приложение ncurses), чем простой инструмент HTML, хотя ..
Ранее я тестировал необработанные команды HTML через SSL, для которых я использовал
openssl
, но это позволяет только одну команду за раз ..Для получения дополнительной информации об опциях openssl s_client,
man s_client
содержит детали.источник