Blog del Podcast
podcast      GitHub      Twitter   Telegram

Croc, la aplicación que nos permite enviar o compartir archivos, directorios, texto… a cualquier dispositivo esté donde esté de un modo fácil con la terminal

Tiempo estimado de lectura: 8 minutos. 940 palabras. sincronización

Croc una herramienta que permite transferir archivos,directorios y texto, de forma sencilla y segura, entre dos PC's, servidores, etc….

AFAIK, croc es la única herramienta de transferencia de archivos CLI que hace todo lo siguiente:

ipv6-first con respaldo de ipv4.

Instalación

La instalación podemos hacerla de diferente maneras, también en función de tu sistema operativo

Instala la última release Linux

curl https://getcroc.schollz.com | bash

Instalación por snap

sudo snap install croc

Arch, Manjaro

sudo pacman -S croc

Termux

Si utilizas Termux en Android:

pkg install croc

Funcionamiento

Una vez instalado croc en ambos dispositivos, para enviar una archivo o directorio, de un dispositivo a otro, utilizaremos el siguiente comando

croc send archivo.txt

Code is: adrian-freedom-harris
On the other computer run

croc adrian-freedom-harris

Para poder recibir este archivo en el otro dispositivo, introduciremos en su terminal adrian-freedom-harris

El archivo, queda a la espera en el dispositivo origen, a la espera que introduzcamos el siguiente código en el dispositivo destino:

croc adrian-freedom-harris

El otro dispositivo preguntará, si queremos descargar el archivo. Pulsaremos y para descargarlo.

croc adrian-freedom-harris

Accept 'archivo.txt' (208.3 kB)? (y/n)

El resultado será..

Receiving (<-[::1]:44504)
unison.log 100% |████████████████████| (203/203 kB, 2.943 MB/s) [0s:0s] ✔️

Ahora mi Raspberry se comunica perfectamente con mi PC

Código personalizado

Para automatizar esta tarea mediante un script, podemos enviar con la opción –code nuestro propio código (debe tener más de 4 caracteres).

croc send --code [código_frase] ~/directorio

Enviando texto

Para enviar un texto:

croc send --text "hola mundo"

Utilizando tuberías: stdin y stdout

cat archivo.txt | croc send

Creando un servidor relay

Entre las opciones de croc, incluye el levantar tu propio relay:

croc relay

De forma predeterminada, utiliza los puertos TCP 9009-9013. Asegúrate de abrirlos. Puede personalizar los puertos (por ejemplo croc relay –ports 1111,1112), pero debe tener un mínimo de 2 puertos para el relay.

El primer puerto es para la comunicación y los puertos subsiguientes se utilizan para la transferencia de datos multiplexados.

Puede enviar archivos usando su relay ingresando –relay para cambiar el relé que está usando si desea personalizar el suyo propio.

croc --relay "mirelay.duckdns.org:9009" send archivo.txt

al enviar, solo necesita incluir el primer puerto (puerto de comunicación). Los puertos posteriores son para la transferencia de datos que se transmitirán al usuario desde el relay.

Relay por Docker

Para crear nuestro relay permanente utilizando docker:

docker run -d -p 9009-9013:9009-9013 -e CROC_PASS='TU_CONTRASEÑA' schollz/croc

Asegúrate de incluir la contraseña para el relay, de lo contrario, se rechazarán las solicitudes.

croc --pass TU_CONTRASEÑA --relay "mirelay.duckdns.org:9009" send archivo

En el otro dispositivo pondremos para descargar utilizando nuestro relay:

croc --pass TU_CONTRASEÑA --relay "mirelay.duckdns.org:9009" código_que_dará_nuestro_relay

Relay con docker-compose imagen uGeek

version: '3'
services:
  croc:
    image: ugeek/croc:arm64
    container_name: croc-relay
    environment:
      - CROC_PASS=xxxxxxxxxxxxx
    restart: always
    ports:
      - '9009-9013:9009-9013'

Código personalizado en mi Relay

croc --pass CONTRASEÑA --relay "mi.duckdns.org:9009"  send --code este-es-mi-codigo archivo.txt

Para no tener que confirmar la descarga, en casos que quieras automatizar esta con un script, utilizaremos –yes

croc --yes --pass CONTRASEÑA --relay "mi.duckdns.org:9009"  send --code este-es-mi-codigo archivo.txt

Exportando mi contraseña

Si no deseas tener que poner en tu dispositivo siempre la contraseña de tu realy, ya que tu dispositivo en de confianza, puedes añadir una variable en ./bashrc o ./zshrc, para que al iniciar bash cargue esta contraseña. Yo he utilizado:

export CROC_RELAY="--yes --pass CONTRASEÑA --relay mi.duckdns.org:9009"

Ahora para enviar lo hariamos:

croc $(echo $CROC_RELAY)  send --code este-es-mi-codigo archivo.txt

Recargamos los cambios, por ejemplo en *.bashrc:

source ~/.bashrc

Ayuda

Comando de ayuda y más opciones:

croc -h
NAME:
croc - easily and securely transfer stuff from one computer to another

USAGE:
Send a file:
croc send file.txt

Send a file with a custom code:
croc send --code secret-passphrase file.txt

VERSION:
v8.3.2-7d155ad

COMMANDS:
send     send a file (see options with croc send -h)
relay    start your own relay (optional)
help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
--remember      save these settings to reuse next time (default: false)
--debug         toggle debug mode (default: false)
--yes           automatically agree to all prompts (default: false)
--stdout        redirect file to stdout (default: false)
--no-compress   disable compression (default: false)
--ask           make sure sender and recipient are prompted (default: false)
--relay value   address of the relay (default: "142.93.177.120:9009") [$CROC_RELAY]
--relay6 value  ipv6 address of the relay (default: "[2604:a880:800:c1::14c:1]:9009") [$CROC_RELAY6]
--out value     specify an output folder to receive the file (default: ".")
--pass value    password for the relay (default: "pass123") [$CROC_PASS]
--help, -h      show help (default: false)
--version, -v   print the version (default: false)

Fuentes


Publicado por Angel el Sunday 20 September del 2020 y actualizado el Wednesday 15 February del 2023



También te puede interesar:




Powered by org-bash-blog

Written in OrgMode with Emacs and converted to HTML with Pandoc

Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.