Imagina algo como esto:
$ curlsh http://www.example.org
> GET /foo/bar/bam
...output here...
> POST /thing/pool ...
... result here....
¿Hay alguna herramienta que me permita hacer eso?
En muchos sistemas Linux / Unix, su pseudocódigo simplemente funcionará en cualquier shell, aunque sus rutas realmente deberían ser URL completas.
Por ejemplo, en sistemas basados en Debian, el paquete libwww-perl
instala tres enlaces simbólicos a lwp-solicitud que se llama /usr/bin/GET
, /usr/bin/HEAD
y /usr/bin/POST
. Estos hacen lo que esperarías. Las versiones recientes del perl-libwww-perl
paquete de OpenSuse omiten los enlaces simbólicos (lo que probablemente sea un error), por lo que tendría que crearlos usted mismo o usarlos lwp-request
directamente. En general y durante muchos años, ha sido una suposición bastante segura que los ejecutables GET, HEAD y POST están disponibles en sistemas unixoides.
Por supuesto, también podría usarlo curl
para todas estas tareas, por lo que quizás no entiendo por qué siente que un shell de línea de comandos como bash no es interactivo.
Gracias por las respuestas
Después de buscar en Google, encontré resty , que es un contenedor de script de shell alrededor de la herramienta de rizo . Esto es realmente lo que quiero. Son 155 líneas de script de shell, y cuando lo ejecuto, obtengo funciones para GET, PUT, POST, DELETE y OPTIONS. Estas funciones son solo envoltorios alrededor del programa curl que se encuentra en mi camino.
Funciona así en 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" : [ ... ]
},
}
$
La primera línea allí solo ejecuta los comandos en el shell actual.
La siguiente línea, el comando "resty", establece la base de URL. A partir de entonces, cualquier llamada a GET, PUT, POST ... hace referencia implícita a esa base. Mostré un ejemplo que emite JSON prettified. Creo que si su servidor emite JSON minimizado, podría imprimirlo con un script externo canalizando la salida.
Hay soporte para preferencias basadas en host. Supongamos que su host de destino es api.example.org. Escriba un archivo llamado ~ / .resty / api.example.org e inserte allí líneas que especifiquen los argumentos que se deben pasar a cada llamada curl al host con ese nombre. Cada verbo http tiene su propia línea. Entonces, insertando este contenido en el archivo:
GET -u myusername:mypassword --write-out "\nStatus = %{http_code}\n"
... significa que cada vez que hago un GET cuando api.example.org es el nombre de host base, el comando curl usará implícitamente los argumentos -u
y que se --write-out
muestran allí. (-u para autenticación básica).
Como otro ejemplo, podría especificar el encabezado Aceptar en ese archivo, de modo que siempre solicite XML:
GET --header "Accept: application/xml"
Cualquier línea de comando curl arg es compatible con ese archivo de preferencias. Todos los argumentos curl para la tupla host + verbo deben ir en una sola línea en el archivo de preferencias.
Práctico.
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
Los listados de directorio solo funcionan para sitios web que envían índices de directorio. Pero incluso si no lo hacen, puede usar el get
comando para obtener archivos individuales.
get
comando descargará el archivo ycat
mostrará el archivo en la pantalla. Para tener una httppost
puedes usar algo como:quote post post.php x=1&y=z
.Puedes usar Netcat .
Aquí hay un ejemplo para recuperar la página de inicio de VLC
El resto del HTML se envía a la consola. Nota: debe escribir Return dos veces después
HTTP/1.0
.fuente
Puede usar interactivo
shells
tanto conpython
operl
:En perl
Ver
perldoc WWW::Mechanize::Shell
o http://search.cpan.org/~corion/WWW-Mechanize-Shell-0.52/lib/WWW/Mechanize/Shell.pmEn Python :
Ver http://wwwsearch.sourceforge.net/mechanize/
fuente
Sí, puedes usar la opción "--config":
Ejemplo:
fuente
Me gusta bastante Lynx para la navegación interactiva en la línea de comandos. Sin embargo, es más un navegador completo (que se adapta a una aplicación ncurses) que una herramienta HTML sin formato.
He probado comandos HTML sin procesar sobre SSL antes, para lo cual utilicé
openssl
, pero esto solo permite un comando a la vez.Para obtener más información sobre las opciones s_client de openssl,
man s_client
contiene los detalles.fuente