Imagine algo como isto:
$ curlsh http://www.example.org
> GET /foo/bar/bam
...output here...
> POST /thing/pool ...
... result here....
existe uma ferramenta que me permita fazer isso?
Em muitos sistemas Linux / Unix, seu pseudocódigo funcionará em qualquer shell, embora seus caminhos sejam realmente URLs completos.
Por exemplo, em sistemas baseados em Debian, o pacote libwww-perl
instala três links simbólicos para lwp-request que são chamados /usr/bin/GET
, /usr/bin/HEAD
e /usr/bin/POST
. Estes fazem o que você esperaria. As versões recentes do perl-libwww-perl
pacote do OpenSuse omitem os links simbólicos (o que provavelmente é um bug), então você teria que criá-los ou usá-los lwp-request
diretamente. Geralmente e por muitos anos, tem sido bastante seguro que os executáveis GET, HEAD e POST estejam disponíveis em sistemas unixóides.
É claro que você também pode usar curl
para todas essas tarefas, então talvez eu não entenda por que você acha que um shell de linha de comando como o bash não é interativo.
Obrigado pelas respostas.
Depois de pesquisar no Google, achei resty , que é um wrapper de script de shell em torno da ferramenta curl . Isso é realmente o que eu quero. São 155 linhas de script de shell e, quando o executo, obtenho funções para GET, PUT, POST, DELETE e OPTIONS. Essas funções são apenas wrappers em torno do programa curl encontrado no meu caminho.
Funciona assim no 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" : [ ... ]
},
}
$
A primeira linha lá apenas executa os comandos no shell atual.
A próxima linha, o comando "resty", define a base da URL. Depois disso, qualquer chamada para GET, PUT, POST ... faz referência implícita a essa base. Eu mostrei um exemplo que emite JSON prettified. Acho que se o seu servidor emitir JSON reduzido, você poderá imprimi-lo com um script externo, canalizando a saída.
Há suporte para preferências baseadas em host. Suponha que seu host de destino seja api.example.org. Crie um arquivo chamado ~ / .resty / api.example.org e insira nele as linhas que especificam argumentos que devem ser passados a cada chamada de conexão com o host com esse nome. Cada verbo http obtém sua própria linha. Então, inserindo este conteúdo no arquivo:
GET -u myusername:mypassword --write-out "\nStatus = %{http_code}\n"
... significa que cada vez que eu faço um GET quando api.example.org é o nome do host base, o comando curl usará implicitamente o -u
e --write-out
args mostrado lá. (-u para autenticação básica).
Como outro exemplo, você pode especificar o cabeçalho Accept nesse arquivo, para solicitar sempre o XML:
GET --header "Accept: application/xml"
Qualquer argumento de linha de comando curl é suportado nesse arquivo de preferências. Todos os argumentos de curvatura para a tupla host + verbo precisam seguir uma única linha no arquivo de preferências.
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
As listagens de diretório funcionam apenas para sites que enviam índices de diretório. Mas, mesmo que não, você ainda pode usar o get
comando para obter arquivos individuais.
get
comando fará o download do arquivo ecat
enviará o arquivo para a tela. Para se ter uma httppost
você pode usar algo como:quote post post.php x=1&y=z
.Você pode usar o Netcat .
Aqui está um exemplo para recuperar a página inicial do VLC
O restante do HTML é enviado para o console. Nota: Você precisa digitar Return duas vezes depois
HTTP/1.0
.fonte
Você pode usar interativo
shells
compython
ouperl
:Em Perl
Consulte
perldoc WWW::Mechanize::Shell
ou http://search.cpan.org/~corion/WWW-Mechanize-Shell-0.52/lib/WWW/Mechanize/Shell.pmEm Python :
Consulte http://wwwsearch.sourceforge.net/mechanize/
fonte
Sim, você pode usar a opção "--config":
Exemplo:
fonte
Eu gosto bastante do lynx para navegação interativa na linha de comando. É mais um navegador completo (que se encaixa em um aplicativo ncurses) do que uma ferramenta HTML bruta.
Eu testei comandos HTML brutos sobre SSL antes, para os quais usei
openssl
, mas isso permite apenas um comando por vez.Para mais informações sobre as opções s_client do openssl,
man s_client
contém os detalhes.fonte