Leer la salida HTTP usando el script shell / bash

Mi URL (http://myhost.com/getuser/Default.aspx?username=b772643) devuelve la siguiente línea de información siempre:

John, Thomas;John.B.Thomas@Company.com

Deseo leer esta línea usando un script de shell o bash sin wget / lynx. Estoy en una situación en la que no puedo usar ninguna otra utilidad, el lenguaje perl, etc.

preguntado el 10 de mayo de 11 a las 13:05

recién verificado. puedo usar curl -

4 Respuestas

Curl o wget son obviamente mejores para el trabajo, pero para el registro, bash y los comandos estándar de Unix (cat & printf) pueden hacer el trabajo.

ksh introdujo el manejo interno de la red de shell y esto ha sido adoptado por bash.

#!/bin/bash

exec 5<> /dev/tcp/myhost.com/80
cat <&5 &
printf "GET /getuser/Default.aspx?username=b772643 HTTP/1.0\r\n\r\n" >&5

contestado el 10 de mayo de 11 a las 18:05

¿Es posible hacer esto en una línea? - ethree

@ethree Claro, solo ponga todos los comandos, separados por punto y coma, en una sola línea. También puede crear una función de shell. - jlliagre

@ethree Defina "no está muy contento" en términos más técnicos y descriptivos. - jlliagre

Bueno, creo que se está molestando por los &. -bash: error de sintaxis cerca del token inesperado ';' - ethree

@ethree Probablemente haya puesto demasiados puntos y comas, publique la línea con la que tiene problemas, esa funciona bien conmigo: (exec 5<> /dev/tcp/www.google.com/80;cat <&5 &;printf "GET /index.html HTTP/1.0\r\n\r\n" >&5) - jlliagre

so

curl "http://myhost.com/getuser/Default.aspx?username=b772643"


curl "http://myhost.com/getuser/Default.aspx?username=b772643"| sed 's/\(.*\);\(.*\)/\2 \1/' | while read email name; do echo =$email=$name=; done

contestado el 10 de mayo de 11 a las 18:05

Gracias a todos. toda la solución funciona bien. Curl es mejor un rizo "myhost.com/getuser/Default.aspx?username=b772643"- baluchen

Un trazador de líneas:

(echo 'GET /getuser/Default.aspx?username=b772643' > /dev/tcp/myhost.com/80);

Respondido 01 Oct 14, 01:10

Podrías usar:

curl "http://myhost.com/getuser/Default.aspx?username=b772643"

y extraer los datos de lo que se devuelve :)

contestado el 10 de mayo de 11 a las 18:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.