Como tengo una netbook y suelo necesitar copiar archivos entre la desktop y ésta, me viene al pelo tener la opción de transferirlos desde Thunar. En la wiki de Xfce encontré como agregar un elemento al menú mencionado:
Entonces creé en ~/.local/share/Thunar/sendto/ un archivo llamado netbook.desktop:
~/.local/share/Thunar/sendto/netbook.desktop dijo:[Desktop Entry]
Type=Application
Version=1.0
Encoding=UTF-8
Name=Netbook
Icon=/usr/share/pixmaps/hpmini_100px.png
Exec=sendto_hpmini.sh %f
Obviamente el ícono es a elección de cada uno, yo le puse uno con la foto de la netbook
Como pueden ver, el lanzador llama a un script y le agrega el nombre del archivo (o directorio) como argumento.
Ahora les paso dicho script:
sendto_hpmini.sh dijo:#!/bin/bash
TARGET=netbook.local
PORT=22
error_noping (){
notify-send --expire-time=5000 --icon=/usr/share/icons/Tango/64x64/status/error.png "No se pudo conectar" "con la Netbook"
exit
}
completed_scp () {
notify-send --expire-time=5000 --icon=/usr/share/icons/Tango/64x64/status/dialog-information.png "Transferencia finalizada" "Archivos copiado a la Netbook"
}
ping -c 1 $TARGET || error_noping
xterm -fs 10 -bg grey -fg brown -geometry 60x2 -title "Enviando archivos a la Netbook" -e scp -r -P $PORT $1 $TARGET: && completed_scp
Como ven, en las variables TARGET y PORT pongo directamente la IP del otro equipo y el puerto, o en este caso, el nombre que me lleva a ella usando avahi. También pueden darle una dirección remota como otracomputadora.dyndns.org
Las líneas de notify-send son para que levante una notificación avisando del estado. Con xfce4-notifyd instalado anda al pelo, con otros sistemas de notificación no se si sea ese el comando (no creo)
Lo que hace este script es simple: ping a la otra computadora, si no responde notifica y termina, si responde abre xterm y copia los archivos con SSH, una vez terminado nos lo notifica.
Por supuesto que necesitamos tener un server de ssh corriendo en la otra máquina para que pueda aceptar la transferencia desde la nuestra (cosa que yo tengo siempre corriendo).
Uso ssh porque es mucho más simple que otras opciones. Si quiero que la transferencia sea más compleja directamente me paso a FTP. Pero como esto es para mandar un archivito o una carpeta cada tanto, con ssh andamos de 10+.
Pueden cambiarle los colores, tamaño y título a la terminal facilmente. También pueden poner una carpeta destino para que no se los copie a la HOME, por ejemplo /home/netbook/Descargas.
Con eso me ahorro abrir una terminal para hacer algo asi de simple.
Les recomiendo leer el siguiente post: para poder personalizar un poco mas su uso de ssh.
También estos que son míos y están relacionados con el presente:
Salu2
Le agregué varias líneas para que pueda seleccionar la direccion y el puerto indicados a la conexion que se puede lograr. O sea: si la netbook esta conectata por cable, usamos esa ip, si no, probamos con la ip de la conexion wifi. Igualmente, si estoy en la LAN de casa, la ip de mi desktop es una y el puerto es el 22, pero sino, uso el dns del router y el puerto que tengo fowardeado para esa compu.
Como tiene las definiciones de las computadoras que uso en general, lo cambié un poco para poder usarlo desde la consola tambien. Así que hay que cambiar los archivos .desktop para que la línea Exec quede así:
dijo:Exec=xterm -e sendto.sh netbook %f
Noten el orden nuevo, primero el destino y luego el archivo.
Pueden usarlo desde la consola tambien
Nuevo sendto.sh dijo:
#!/bin/bash
FILE="${@:2}"
echo Archivo a Transferir: "${@:2}"
echo
# Define objetivo
case $1 in
netbook)
TARGET=10.0.0.11
ping -c 1 $TARGET || TARGET=10.0.0.10
ping -c 1 $TARGET || TARGET=netbook.local
PORT=22
;;
fierro)
TARGET=10.0.0.12
ping -c 1 $TARGET || TARGET=fierro.dyndns.com
PORT=22
;;
desktop)
TARGET=10.0.0.1
ping -c 1 $TARGET || TARGET=desktop.local
ping -c 1 $TARGET || TARGET=desktop.dyndns.com
if [ $TARGET=desktop.dyndns.com]
then
PORT=2000
else
PORT=22
fi
;;
*)
TARGET="$1"
PORT=22
;;
esac
error_noping (){
echo
echo '==> No se pudo conectar con el destino <=='
echo
notify-send --expire-time=5000 --icon=/usr/share/icons/Tango/64x64/status/error.png "No se pudo conectar" "con $TARGET"
sleep 60m
exit
}
completed_scp () {
notify-send --expire-time=5000 --icon=/usr/share/icons/Tango/64x64/status/dialog-information.png "Transferencia finalizada" "Archivos copiado a $TARGET"
echo
echo '==> Transferencia terminada <=='
echo
sleep 5s
}
# Ping para verificar conexion
echo
echo Objetivo: $TARGET
echo Puerto: $PORT
echo
ping -c 1 $TARGET || error_noping
echo
echo OK
echo
# Transferencia
echo "scp -r -P $PORT $FILE $TARGET:"
scp -r -P $PORT "$FILE" $TARGET:
completed_scp
Este funciona con nombres que contienen espacios.
Adaptaciones que le hagan uds, son bienvenidas para que podamos mejorarlo
Salu2.