El comando curl de Linux se utiliza para descargar o cargar datos a un servidor a través de protocolos compatibles como HTTP, FTP, IMAP, SFTP, TFTP, IMAP, POP3, SCP, etc. Es una utilidad remota, por lo que funciona sin interacción del usuario.
La transferencia de datos de un lugar a otro es una de las tareas vitales y más utilizadas de un sistema informático. Sin embargo, existen muchas herramientas GUI disponibles para la transferencia de datos. Pero cuando se trabaja en la línea de comandos, se vuelve un poco complicado. La utilidad curl nos permite transferir datos a través de la línea de comando.
Curl es una herramienta de línea de comandos para obtener y enviar datos, como archivos con sintaxis de URL. Admite todos los protocolos admitidos por libcurl porque utiliza libcurl. Curl proporciona soporte para HTTPS e implementa la verificación del certificado SSL cuando se menciona un protocolo seguro de forma predeterminada, como HTTPS. Curl traerá el certificado del servidor remoto y verificará el certificado de CA para evitar que la validez del servidor remoto garantice que el servidor remoto es el que solicita cuando curl se vincula a un servidor remoto mediante HTTPS.
Hay muchas opciones para definir un certificado de CA, como --capath y --cacert . La opción, es decir, --cacert, se puede utilizar para especificar la ubicación del archivo del almacén de certificados de CA. Si un archivo de certificado de CA no está disponible en la plataforma Windows, curl buscará el nombre del archivo de certificado de CA 'curl-ca-bundle.crt' en la siguiente secuencia:
- Directorio en el que está presente el programa curl.
- Directorio de trabajo actual.
- Directorio del sistema (Windows).
- Directorio (Windows).
- Los directorios se mencionan en las variables de entorno %PATH%.
Curl dará un mensaje de error cuando el servidor remoto esté utilizando un certificado autofirmado o cuando el certificado del servidor remoto no esté firmado a través de una CA mencionada en el archivo del certificado de CA. Se puede utilizar la opción --insecure o -k para omitir la verificación del certificado. Como alternativa, el certificado de CA remoto se puede incluir en el archivo del almacén de certificados de CA si el servidor remoto es válido.
Curl proporciona una gran cantidad de trucos útiles como reanudación de transferencia de archivos, cookies, conexiones SSL, publicación HTTP, carga FTP, autenticación de usuario, soporte de proxy y más. Curl está mecanizado por libcurl para cada aspecto relacionado con la transferencia.
¿Qué es libcurl?
libcurl es una biblioteca de transferencia de URL gratuita del lado del cliente. Admite SMB, SMTP, SCP, RTMP, RTSP, POP3, MQTT, LDAP, Kerberos, IMAP, HTTPS, túnel proxy HTTP, HTTP PUT, HTTP POST, HTTP/1, Gopher, FTPS, FTP, DICT y cookies. La biblioteca también admite autenticación de usuario más contraseña, servidores proxy, LDAPS, certificados HTTPS, carga basada en formularios HTTP, carga FTP, reanudación de transferencia de archivos, TFTP, Telnet, SFTP y esquema de URL de archivos.
libcurl es compacto. Crea y funciona de manera idéntica en varias plataformas, incluidas Microsoft Windows, UnixWare, Ultrix, Tru64, Symbian, Solaris, RISC OS, QNX Neutrino, OS/2, OpenBSD, NetWare, NetBSD, macOS, Linux, IRIX, iOS, HURD, HP. -UX, FreeBSD, DOS, Darwin, OpenVMS, BlackBerry 10, BlackBerry Tablet OS, BeOS, Android, AmigaOS y AIX.
La biblioteca libcurl es compatible con IPv6, segura para subprocesos y gratuita. Los enlaces también están disponibles para más de 50 lenguajes, incluidos Python, PHP, Java y C/C++.
La biblioteca libcurl admite SChannel, gskit en IBM i, NSS, mbed TLS, GnuTLS en Windows, Secure Trasport en iOS y macOS, TLS/SSL a través de OpenSSL, Rustls, BearSSL, wolfSSL, AmiSSL, libressl y Boringssl.
Sintaxis:
La sintaxis básica para usar curl es la siguiente:
curl [options] [URL...]
De la sintaxis anterior,
URL:
La sintaxis de la URL es una URL general que depende del protocolo. Podemos especificar varias URL de la siguiente manera:
http://site.{one,two,three}.com
Opciones:
El comando curl admite las siguientes opciones de línea de comandos:
--abstract-unix-socket: Se utiliza para conectarse a través de un socket de dominio Unix abstracto en lugar de una red.
--anyauth: Se utiliza para ordenar curl para autenticar el método por sí mismo y utilizar el método más seguro. Esta utilidad es una utilidad opcional '--basic, --digest, --ntlm y negociar', que se utiliza para configurar un método de autenticación específico.
-a, --añadir: Se utiliza para cargar archivos. Agrega el archivo en lugar de sobrescribirlo. Si el archivo proporcionado no existe en el servidor, creará uno.
concatenar cadenas
--básico: Especifica el uso de autenticación básica HTTP. Es la opción predeterminada del comando curl. Es útil para anular la configuración anterior.
--cacert : Se especifica para usar el archivo de certificado particular para verificar al par. Los archivos pueden tener varios certificados de CA. El formato estándar para los certificados es PEM, por lo que todos los certificados deben estar en él.
--capath: Se especifica para usar el directorio particular para verificar el par. Podemos especificar varias rutas separándolas con dos puntos (:) como, por ejemplo, 'ruta: ruta2:ruta3'. El formato estándar para los certificados es PEM, por lo que todos los certificados deben estar en él.
--estado-certificado: Se utiliza para verificar el estado del certificado del servidor. Utiliza Solicitud de estado de certificado o TLS grapado OCSP.
--tipo de certificado: Especifica el tipo de certificado curl proporcionado. Estos certificados pueden estar en formato PEM, DER y ENG. El valor predeterminado es PEM. Si se especifica varias veces, el curl tomará el último valor.
-E, --cert : Se especifica para utilizar el archivo de certificado del cliente al obtener un archivo a través de cualquier protocolo basado en SSL, como HTTPS, FTPS, etc.
--cifrados : Se utiliza para seleccionar los cifrados que se utilizarán en la conexión.
--comprimido-ssh: Se utiliza para habilitar la compresión SSH incorporada. Esta opción tomará como una solicitud por parte del servidor, por lo que el servidor puede aceptarla o no.
--comprimido: Se utiliza para solicitar una respuesta comprimida utilizando los algoritmos curl y guarda el documento sin comprimir. Esta opción enviará un informe sobre codificación curl no compatible.
-K, --config: Se utiliza para describir un archivo de texto para leer argumentos curl. El curl utilizará los argumentos de la línea de comando del archivo de texto.
--tiempo de espera de conexión: Se utiliza para especificar el tiempo máximo en segundos para el tiempo de espera de la conexión curl.
--conectar a : Se utiliza para crear una solicitud al par determinado de host y puerto; de lo contrario, se conectará al siguiente par. Esta opción es una herramienta útil para realizar solicitudes directas a un servidor específico.
-C, --continuar-en : Se utiliza para continuar o reanudar una transferencia de archivo anterior en el desplazamiento dado.
-c, --tarro-de-galletas : Se utiliza para especificar un archivo particular en el que queremos escribir todas las cookies después de una operación exitosa.
-b, --galleta: Se utiliza para reenviar datos al servidor HTTP en el encabezado de la cookie.
--create-dirs: Se utiliza en conjunción con la '-o? opción, creará la jerarquía de directorio local requerida.
--crlf (FTP SMTP): Se utiliza para convertir LF a CRLF en la carga. Es una herramienta útil para MVS (OS/390).
--crlarchivo: Se utiliza para especificar (en formato PEM) una Lista de revocación de certificados.
--datos-ascii: ¿Es un alias para ?-d? opción.
--delegación : Se utiliza para configurar NIVEL para que reconozca al servidor lo que puede delegar en lo que respecta a las credenciales de usuario.
--digerir: Se utiliza para habilitar la autenticación HTTP Digest.
-q, --deshabilitar: Si se usa como primer argumento, ignorará el archivo de configuración curlrc.
--dns-interfaz: Se utiliza para reconocer que el servidor envía las solicitudes DNS salientes.
--servidores-dns: Se utiliza para especificar los servidores DNS en lugar de los servidores predeterminados.
-f, --falla: Se utiliza para hacer que el curl falle silenciosamente en errores del servidor.
-F, --forma : Se utiliza para emular un formulario completado enviado por el usuario.
-P, --puerto-ftp: Se utiliza para invertir los roles de escucha predeterminados cuando se conecta con FTP.
--ftp-ssl-ccc-modo: Se utiliza para configurar el modo CCC.
-G, --obtener: ¿Se utiliza para especificar datos con? -d? opción que se utilizará en una solicitud HTTP GET en lugar de una solicitud POST.
-h, --ayuda: Se utiliza para mostrar el manual de ayuda con una breve descripción del uso y opciones de soporte.
-0, --http1.0: Está especificado para utilizar la versión HTTP 1.0.
--ignorar-longitud-del-contenido: Se utiliza para ignorar el encabezado Content-Length.
-Incluyo: Se utiliza para incluir los encabezados de respuestas HTTP.
-4, --ipv4: Se utiliza para resolver nombres en direcciones Ipv4.
-6, --ipv6: Se utiliza para resolver nombres en direcciones Ipv6.
Protocolos de rizo
Curl admite varios protocolos:
Instalación del comando curl
El comando curl viene con la mayoría de los linux distribuciones. Pero, si el sistema no lleva el curl por defecto. Debes instalarlo manualmente. Para instalar el curl, ejecute los siguientes comandos:
Actualice el sistema ejecutando los siguientes comandos:
sudo apt update sudo apt upgrade
Ahora, instale la utilidad curl ejecutando el siguiente comando:
sudo apt install curl
Verifique la instalación ejecutando el siguiente comando:
curl -version
El comando anterior mostrará la versión instalada del comando curl.
Obtener el contenido de la URL especificada
Para recuperar el contenido de cualquier URL específica, ejecute el comando curl, seguido de la URL. Considere el siguiente comando:
curl https://www.javatpoint.com/linux-tutorial
El comando anterior recuperará los datos de la página especificada. Considere el siguiente complemento de la salida:
En el resultado anterior, podemos ver que se están recuperando los datos de la página de la URL proporcionada. Para detener la ejecución, presione las teclas CTRL+C.
Guardar datos en un archivo específico
Para guardar los datos en un archivo específico, pase la opción '-o' seguida del directorio, el nombre del archivo y la URL de la siguiente manera:
curl -o /
Considere el siguiente comando:
curl -o /home/javatpoint/Documents/linux.html https://www.javatpoint.com/linux-tutorial
El comando anterior guardará los datos de la página en el archivo 'linux.html' en el directorio '/home/javatpoint/Documents/'. Considere el siguiente resultado:
Desde el comando anterior, podemos ver la cantidad total de datos descargados, los datos recibidos, el tiempo promedio y algunas otras estadísticas sobre los datos.
Para verificar los datos descargados, abra el archivo ejecutando el comando cat
cd Documents cat linux.html
Considere el siguiente complemento de salida:
Descargar un archivo de la web
Uno de los usos interesantes y fascinantes de curl es que podemos descargar un archivo de la web. Para descargar un archivo de la web, copie el enlace de descarga y péguelo con el comando curl. También podemos pasar otros argumentos para hacerlo más específico. Por ejemplo, descargue la última versión de ubuntu, copie el enlace de descarga de ubuntu desde su sitio web oficial y péguelo con el comando curl de la siguiente manera:
curl -o /home/javatpoint/Documents/ubuntu20.04.iso https://ubuntu.com/download/desktop/thank-you?version=20.04&architecture=amd64
El comando anterior descargará Ubuntu 20.04 en el directorio especificado. Proporcione la extensión de archivo adecuada; de lo contrario, descargará el archivo en un formato diferente. Considere el siguiente resultado:
Del resultado anterior, se está descargando el archivo ubuntu.iso. Podemos ver el tiempo de descarga, el tamaño del archivo, la velocidad de descarga y otras estadísticas. Para detener la ejecución, en cualquier momento presione las teclas CTRL+D.
Reanudar las descargas interrumpidas
Puede existir la posibilidad de que las descargas se interrumpan por algún motivo. Podemos reanudar las descargas usando el comando curl. Para reanudar el archivo interrumpido, pase la opción '-C' con el comando curl de la siguiente manera:
curl -C
El comando anterior reanudará la descarga de la URL especificada.
Descargar varios archivos
Para descargar varios archivos, especifique las distintas URL separadas por espacios de la siguiente manera:
curl -O
El comando anterior descargará los datos de ambas URL, respectivamente.
Consultar encabezados HTTP
Los encabezados HTTP contienen información adicional; permite que el servidor web descargue esta información. Para consultar los encabezados HTTP de un sitio web, ejecute el comando con la opción '-I' de la siguiente manera:
curl -I www.javatpoint.com
El comando anterior producirá el siguiente resultado: