
Era da un po’ che cercavo un sistema semplice per passare file da un pc ad un altro senza dover passare da programmi di posta, cloud, condivisioni di chiavi, webserver improvvisati ecc ecc.
La cosa che mi premeva di piu’ era proprio poter fare tutto da terminale e dopo svariati tentativi (compreso webfs che comunque ha il suo perche’) becco questo servizio!
E’ opensource, gratuito e presente su github (per chi volesse contribuire).
In pratica da shell si invia il file al loro server che lo tiene per 336 ore restituendo un link per il download. Semplice e funzionale! Ovvio che chi ha il link puo scaricare il file quindi non e’ adatto a contenuti sensibili… Ma se il file fosse CIFRATO con GPG PRIMA dell’invio?
Beh, a me e’ piaciuto talmente tanto che ho scritto due semplici script sulla base dei loro esempi e ne sono contento.
Gli script sono i seguenti:
aba-transfer
# !/bin/bash
# Controllo se c'e' un pipe allo script
if [ -p /dev/stdin ]; then # Pipe di un contenuto
#file="$(echo $RANDOM| md5sum | head -c 8;echo).aba" # genero nome casuale
file="aba-transfer_$(date +%Y-%m-%d_%H-%M-$S).aba" # nome con un senso
file_name="$file"
cat >> $file
echo "Creo QUI il file $file_name prima dell'invio"
else # stdin
if [ -n "$1" ];then
file="$1"
file_name=$(basename "$1")
if [ ! -e "$file" ];then
echo -e "$file: No such file or directory">&2
return 1
fi
else
echo -e "Usa il servizio opensource <<< www.transfer.sh >>> per inviare file IN CHIARO su un server esterno e propone un link per il download da remoto.\nPer inviare i file cifrati con GPG utilzzare altro script ---aba-transfer-gpg---\n\nEs: aba-transfer <file|directory>\n... | aba-transfer <file_name>"
exit 0
fi
fi
if [ -d "$file" ];then # Se e' una directroy la zippa
file_name="$file_name.zip"
echo "Invio di una cartella, creo zip file $file_name ed invio..."
ADDRESS=$((cd "$file"&& zip -r -q - .) | curl --progress-bar --upload-file "-" "https://transfer.sh/$file_name" | tee /dev/null)
else # File
echo "Invio di $file_name..."
ADDRESS=$(cat "$file"|curl --progress-bar --upload-file "-" "https://transfer.sh/$file_name"|tee /dev/null)
fi
echo -e "\nSalvo su ~/transfer_history.txt\n"
echo "$(date +%Y-%m-%d_%H-%M-%S) $ADDRESS $file" >> ~/transfer_history.txt
echo -e "Per scaricare:\ncurl $ADDRESS -o $file_name"
E lo stesso ma con la cifratura diretta via chiave gpg.
aba-transfer-gpg
# !/bin/bash
# Controllo se c'e' un pipe allo script
if [ -p /dev/stdin ]; then # Pipe di un contenuto
#file="$(echo $RANDOM| md5sum | head -c 8;echo).aba" # genero nome casuale
file="aba-transfer_$(date +%Y-%m-%d_%H-%M-%S).aba"
file_name="$file"
cat >> $file
echo "Creo QUI il file $file_name prima dell'invio (SALVATO NON CIFRATO!)"
else # stdin
if [ -n "$1" ];then
file="$1"
file_name=$(basename "$1")
if [ ! -e "$file" ];then
echo -e "$file: No such file or directory">&2
return 1
fi
else
echo -e "Usa il servizio opensource << www.transfer.sh >> per inviare file CIFRATO con GPG su un server esterno e propone un link per il download da remoto.\n\nEs: aba-transfer <file|directory>\n... | aba-transfer <file_name>"
exit 0
fi
fi
if [ -d "$file" ];then # Se e' una directroy la zippa
file_name="$file_name.zip"
echo "Invio di una cartella, creo zip file $file_name, lo cifro con GPG e lo invio..."
ADDRESS=$((cd "$file" && zip -r -q - .) |gpg -ac -o-| curl -X PUT --progress-bar --upload-file "-" "https://transfer.sh/$file_name.gpg" | tee /dev/null)
else # File
echo "Invio di $file_name cifrato con GPG..."
ADDRESS=$(cat "$file"|gpg -ac -o-|curl -X PUT --progress-bar --upload-file "-" "https://transfer.sh/$file_name.gpg"|tee /dev/null)
fi
echo -e "\nSalvo su ~/transfer_history.txt\n"
echo "$(date +%Y-%m-%d_%H-%M-%S) $ADDRESS $file" >> ~/transfer_history.txt
echo -e "Per scaricare il file CIFRATO:\ncurl $ADDRESS -o $file_name.gpg\n"
echo -e "Per scaricare e DECIFRARE DIRETTAMENTE il file:\ncurl $ADDRESS | gpg --decrypt -o $file_name"
Per cifrarlo e’ necessario avere sul sistema opengpg funzionante con le chiavi impostate, mentre per de-cifrarlo sugli altri sistemi e’ sufficiente la password che si imposta al momento della creazione e la chiave pubblica.
See You!