Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Portada » Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 9 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Vie Jul 10, 2009 7:00 am
Mensajes: 5

Nota Publicado: Vie Jul 10, 2009 11:02 am 
Arriba  
Hola a todos... :D
Bueno les cuento que estoy haciendo un script para usar mi DropBox con mas comodidad...
La cosa viene asi, necesito que copie un archivo a algunas de las 3 carpetas que quiero, despues que me muestre que lo copio, y me gustaria que me de el link que necesito con DropBox...
Asi es mi code ahora:

Código:
#!/bin/sh

# Dialog box to choose thumb's size
UBIC=`zenity --list --title="Elegir la Ubicacion del archivo..." --radiolist --column="·" --column="Ubicaciones" "" "Dropbox" "" "Dropbox/Photos" "" "Dropbox/Public"`

if [ "${SIZE}" == "" ]; then   
zenity --error --text="La ubicacion no fue definida por $USERNAME.
Por favor, seleccione la ubicacion para copiar. "
exit 1
fi
Destino=/home/$USERNAME/$UBIC
cp $1 $Destino

zenity --info --text="El archivo $1 ha sido copiado a /home/$USERNAME/$UBIC."

nautilus /home/$USERNAME/$UBIC


Si yo ejecuto dropbox puburl /home/username/Pantallazo.png desde la terminal, me da el link:
Código:
http://files.getdropbox.com/u/1249210/Pantallazo.png


Y si ejecuto:
Código:
usr@mach:~$ cd ./DropBox/Public
usr@mach:~/DropBox/Public$ dropbox filestatus

Me da el resultado de todos los archivos de la carpeta y el estado:
Código:
Pant.png     up to date
Pant2.png     up to date
Pant3.png     syncing


Bueno, resulta que quiero hacer, que una vez que termine de subirse (es decir que cambie el estado de syncing a up to date) me de el link.
Osea el script tendria que obtener el nombre del archivo, ubicarlo en esa tabla de estado, y cuando vea que esta en up to date, ejecutar el comando que da como resultado el link, ademas me gustaria q se copie en el porta papeles como lo hace desde el menu contextual...

Otro problema que tengo con ese script, es que no me copia todos los archivos, solo archivos chicos como imagenes... :?

Espero puedan ayudarme, Gracias de antemano! :wink:

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 8:00 am
Mensajes: 1457
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Vie Jul 10, 2009 11:47 am 
Arriba  
¿Has mirado en las opciones del dropbox en busca de algo útil? Eso de que cambie de estado, sin que te lo proporcione dropbox de alguna forma, es complicado.

Lo único que se me ocurre es obtener el estado periódicamente, y comprobar que el estado del fichero en cuestión sea "up to date", para después ejecutar el comando.

Para el portapapeles, parace que el comando a utilizar es el "Xsel". Aquí te dejo la información:
http://linuxtidbits.wordpress.com/2008/02/22/command-line-to-clipboard/

_________________
Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Vie Jul 10, 2009 7:00 am
Mensajes: 5

Nota Publicado: Vie Jul 10, 2009 10:43 pm 
Arriba  
akodo, si eso es lo que quiero, que al copair el archivo de la variable $1 a /home/user/Dropbox haga un
$ cd /home/user/Dropbox
$ dropbox filestatus
y ubicar en la lista que da como resultado de salida, la linea que contenga el nombre del archivo copiado (debe haber una forma de extraccion del nombre de la variable $1 [$1:~name] o algo asi parecido) y ver el resultado que da dropbox, si el resultado es up to date, que haga:
$ dropbox puburl /home/user/Dropbox/$1:~name
Es decir que osea la direccion de la carpeta de dropbox y el nombre del archivo que tomamos en $1.. y guardar en el portapales el resultado que seria un link a internet...
Despues le pondria un cartelito que avise, pero eso seria facil con zenity...
Soy muy novato con el tema del bash, en cambio con el BATCH soy bastante mas experimentado, hace pocos meses que uso GNU/Linux Ubuntu 9.04.

Gracias por sus respuestas, en especial avos akodo! :wink:

Salu2! :D

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 8:00 am
Mensajes: 1457
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Sab Jul 11, 2009 1:25 pm 
Arriba  
Suponiendo que tienes el nombre del fichero en cuestión en la variable "$f" puedes intentar lo siguiente:
Código:
estado=`dropbox filestatus | grep $f | sed -r {s/$f[[:blank:]]+//g}`

Con eso deberías tener el estado del fichero en la variable estado

_________________
Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Vie Jul 10, 2009 7:00 am
Mensajes: 5

Nota Publicado: Dom Jul 12, 2009 11:09 am 
Arriba  
akodo, lo probe en consola, pero me daria una cosa asi:
Código:
estado=Drop:               up to date


Suponiendo que Drop es la variable $f...

Bueno, eso es lo que queria en parte, pero como obtengo de toda la direccion del archivo $1 solo el nombre? Y como para extraer de la linea qe da como resultado el comando que me pasaste antes que tiene una estrucutura asi:
Código:
[Archivo][           ][Estado]

Como extraigo solo el resultado, para compararlo y si es correcto (up to date) ejecute:
Código:
dropbox puburl $f

y ese resultado lo mande al Portapapeles...?


Gracias! :wink:

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Vie Jul 10, 2009 7:00 am
Mensajes: 5

Nota Publicado: Dom Jul 12, 2009 11:48 am 
Arriba  
Con respecto a la extraccion del nombre estuve probando algo asi:
Código:
here=$1
count=`expr  ${#PWD} + 1`
countf=${here:$count}
echo $countf


Que anduviera bien si $1 fuera un directorio, porq lo que hace es asignar el archivo tomado ($1) a here. Despues cuenta cuantos caracteres tiene la ubicacion actual del script (/home/user =10) y le sumo 1 por la barra (/home/user/nombrearchivo)
despues extrae de la variable que muestra el archivo, la ubicacion actual y la barra, quedando el nombre solo...
/home/user/nombrearchivo...

Pero al ser $1 o here, un archivo, tira error... tendria que hacer que el scirpt se ubique en donde esta el archivo..

$ cd $1:Ubic
$ Codigo de arriba

Pero no logro hacerlo... :?

Salu2! :D

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 8:00 am
Mensajes: 1457
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Dom Jul 12, 2009 7:42 pm 
Arriba  
Para extraer los nombres de los ficheros de una ruta tienes los comandos "basename" y "dirname", para extraer el nombre del fichero y el directorio respectivamente.

Para lo del dropbox, empieza haciendo unas pruebas:
· dropbox filestatus | grep $f
Debería dejarte únicamente la línea del filestatus que tiene el nombre del fichero (contenido en la variable $f). Si deja algo más, entonces vamos por mal camino.

_________________
Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Vie Jul 10, 2009 7:00 am
Mensajes: 5

Nota Publicado: Mié Jul 15, 2009 8:41 am 
Arriba  
Gracias por los datos... Miren asi va mi codigo...
Código:
#!/bin/sh

UBIC=`zenity --list --title="Elegir la Ubicacion del archivo..." --radiolist --column="·" --column="Ubicaciones" "" "Dropbox" "" "Dropbox/Photos" "" "Dropbox/Public"`


if [ "${UBIC}" == "" ]; then   
zenity --error --text="La ubicacion no fue definida por $USERNAME.
Por favor, seleccione la ubicacion para copiar. "
exit 1
fi

Destino=/home/$USERNAME/$UBIC
name=`basename $1`
cp $1 $Destino

zenity --info --text="El archivo $1 ha sido copiado a /home/$USERNAME/$UBIC."


if [ "${Destino}" == "/home/$USERNAME/Dropbox/Public" ]; then

cd /home/$USERNAME/Dropbox/Public
estado=`dropbox filestatus | grep $name | sed -r {s/$f[[:blank:]]+//g}`
xmessage "$estado"
exit

else

exit

fi

Bueno, logre hacer una variable con el nombre, porq si filtra con grep todo el path, no funciona solo grep nombre.extension
La cuestion es que cuando ejecuto el comando (dropbox filestatus | grep $name | sed -r {s/$f[[:blank:]]+//g}) solo en la temrinal me da un resultado asi:
Código:
archivo.ext:uptodate

Osea todo junto, y nose como compararlo solo con el estado de subida.
Pero al usarlo en el script de gnome, termina en el cartel de que lo copio! sin otro comando... :?
Y cuando ejecuto el script en consola me salen estas lineas...
Código:
Gtk-Message: (for origin information, set GTK_DEBUG): failed to retrieve property `GtkTreeView::odd-row-color' of type `GdkColor' from rc file value "((GString*) 0x8658780)" of type `GString'
[: 10: Dropbox/Public: unexpected operator
[: 27: /home/rodri/Dropbox/Public: unexpected operator


Pero lo que me faltaria es que vea el estado, hasta que cambie de syncing a up to date, y al pasar esto haga un
Código:
dropbox getpub $namearchivo
y me tire un mensaje en zenity con el link de descarga.. (q es el resultado del comando anterior)

Eso es... Gracias Akodo! :D

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 8:00 am
Mensajes: 1457
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Mié Jul 15, 2009 6:00 pm 
Arriba  
En la parte del script donde usas el sed, pones $f cuando debería ser $name.
Además, parece que lo que te deja el filestatus es:
Código:
fichero:      up to date
y no
Código:
fichero     up to date
Los ":" son importantes.

Siendo así, el sed hay que cambiarlo por
Código:
sed -r {s/$name:[[:blank:]]+//g}

_________________
Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  
Mostrar mensajes previos:  Ordenar por  
 [ 9 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


 Temas relacionados   Autor   Respuestas   Vistas   Último mensaje 
Ayuda ejercicio Bash ( shell script)

en Programación

tojiji4

0

457

Lun Nov 07, 2016 8:54 am

tojiji4 Ver último mensaje

Problema con el shell BASH. *Ayuda*

en Sistema

v1rtux

2

672

Vie May 30, 2014 1:25 am

EINOM Ver último mensaje

Ayuda con Shell script

en Software

sebadksl

0

490

Dom Nov 02, 2014 8:57 pm

sebadksl Ver último mensaje

Ayuda en shell script

en Proyectos

nicolasdalbroi

1

1307

Vie Ago 29, 2014 3:42 am

neurus Ver último mensaje

Ayuda con Shell script

en Programación

sebadksl

2

794

Dom Nov 02, 2014 9:50 pm

sebadksl Ver último mensaje



¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC + 1 hora [ DST ]
Traducción al español por Huan Manwë
phpBB SEO