Linux en Espanol
 
Mensaje en ventana emergente con un script (tema #24452)
Publicar nuevo tema  Responder al tema    Foros de discusión -> Programación
Autor Mensaje
abmptc
Forista


Registrado: 2009-06-04
Mensajes: 23

Publicado: 2012-07-16 10:39:36    Asunto: Mensaje en ventana emergente con un script

Hola,

En windows cargo en el inicio un archivo .vbs con el siguiente c?digo

[code:1:a0316e5fb0]
do until (hour(time)=14) and (minute(time)=0) and (second(time)=0)
if (minute(time)=0) and (second(time)=0) then
'msgbox hour(time) & minute(time) & second(time)
msgbox "Mensaje"
end if
loop[/code:1:a0316e5fb0]

Con esto consigo que cada hora me muestre un mensaje recordatorio.

Evidentemente vbs no se puede usar en Linux ?Como podr?a hacer esto mismo en un entorno Linux?

Un saludo
AnimAlf
Forista


Registrado: 2008-08-18
Mensajes: 786

Publicado: 2012-07-16 20:40:23    Asunto:

Para este tipo de tareas se utiliza el demonio cron, para que se lance en el momento que quieras, el tiempo que quieras.

Lenguajes de programaci?n tienes un mont?n. Puedes utilizar zenity si quieres las formas.

[i:962d51ee3a]Salud[/i:962d51ee3a][b:962d51ee3a]OS[/b:962d51ee3a]
miguelgf
Forista


Registrado: 2006-12-28
Mensajes: 621

Publicado: 2012-07-17 00:55:15    Asunto:

Hola.

El mensaje es f?cil con:
[code:1:b2f4bafba3]Xdialog --msgbox "Hola" 10 50[/code:1:b2f4bafba3]

Para programarlo, como te ha dicho AnimAlf, usa el cron.

Saludos.
abmptc
Forista


Registrado: 2009-06-04
Mensajes: 23

Publicado: 2012-07-20 12:16:00    Asunto: Solucionado!!!

Hola

Muchas gracias por vuestras respuestas. Gracias a ellas me he hecho un shell script que ejecuto autom?ticamente cada vez que inicio la sesi?n:

[code:1:232287bde9]
while true; do
varMinutos=`date +%M`
varSegundos=`date +%S`
if [ "$varMinutos" = "00" ] && [ "$varSegundos" = "00" ]
then
zenity --info --text "Son las $varMinutos"
#echo "Es la hora $varMinutos:$varSegundos"

else
echo "Aun no es la hora $varMinutos:$varSegundos"
fi
sleep 1
done[/code:1:232287bde9]

Muchas gracias y un saludo
miguelgf
Forista


Registrado: 2006-12-28
Mensajes: 621

Publicado: 2012-07-20 19:05:39    Asunto:

Hola.

Como ejercicio para ver c?mo hacer una cosa en bash, est? muy bien, pero como soluci?n definitiva, mejor que tener un bucle en ejecuci?n permanente que compruebe cada minuto la hora que es, es resolver la tarea por la utilidad del sistema que se encarga de eso, el cron.

Se tratar?a de lo siguiente:
1.- Edita un fichero de texto temporal, por ejemplo "paracron.tmp" y escribe dentro:
[code:1:862b7f0f27]* 0 * * * DISPLAY=":0" /usr/bin/zenity --info --text "Son las $(date +%H:%M)"
[/code:1:862b7f0f27](Revisa en tu equipo si realmente zenity est? en esa carpeta u otra).
2.- Mete eso en el crontab de tu usuario, sustituyendo TuUsuario por tu nombre de usuario, abmptc o el que sea. Para ello como root ejecuta:
[code:1:862b7f0f27]crontab -u TuUsuario paracron.tmp[/code:1:862b7f0f27]
3.- Borra el fichero temporal paracron.tmp, que ya no te hace falta m?s.

Con eso ya has acabado.

Te cuento qu? significa lo que has metido en el crontab:
El primer asterisco significa que se ejecute la orden todas las horas.
El siguiente 0, que se ejecute en el minuto 0
El siguiente asterisco, que se ejecute todos los d?as del mes (1, 2..., 31)
El siguiente, que se ejecute todos los meses.
El siguiente que se ejecute todos los d?as de la semana (lunes, ..., domingo)
Es decir, se ejecuta todas las horas en punto de todos los d?as.
La l?nea /usr/bin/zenity --info --text "Son las $(date +%H:%M)" es el comando que quieres ejecutar.
Por ?ltimo queda lo m?s "raro", el DISPLAY=":0". Cron es un demonio, que se ejecuta sin interacci?n con la pantalla. Eso significa que en primera instancia no puede ejecutar nada que interact?e con el usuario porque no sabe contra qu? servidor gr?fico debe lanzarlo, es decir, podr?a ejecutar copias de ficheros, borrados, etc, pero no sacar ventanas a pantalla. Con DISPLAY=":0" le decimos que el comando siguiente, que es gr?fico, debe sacarlo en la pantalla "0", que es la primera sesi?n gr?fica que abres en el PC.

Si bien la soluci?n del bucle infinito comprobando la hora funciona bien, qu?date con esta informaci?n por si en el futuro tienes otras cosas m?s complicadas que programar en tareas y te interesa usar cron.

Saludos.
abmptc
Forista


Registrado: 2009-06-04
Mensajes: 23

Publicado: 2012-07-25 11:19:01    Asunto:

Tienes toda la raz?n del mundo.

Muchas gracias por tu explicaci?n, ha sido inmejorable.

Un saludo.





La marca registrada Linux (R) se usa siguiendo la sublicensia obtenida del "Linux Mark Institute",
el LICENCIATARIO exclusivo de Linus Torvalds, propietario de la marca en EEUU y otros países
The registered trademark Linux (R) is used pursuant to a sublicense from the Linux Mark Institute,
the exclusive LICENSEE of Linus Torvalds, owner of the mark in the U.S. and other countries