¿Cómo cambiar los fondos de pantalla de todos los clientes?

13

Como se dijo antes, estamos ejecutando más de 500 PC ubuntu en nuestra empresa. A menudo solíamos configurar los anuncios de nuestra empresa como un fondo de pantalla en la máquina de los clientes. Es difícil para nosotros cambiar fondos de pantalla en todas estas máquinas una por una y también es difícil para nosotros ejecutar secuencias de comandos en cada máquina a través de SSH para cambiar el fondo de pantalla. ¿Hay alguna manera de configurar un servidor como si cambiamos el fondo de pantalla en el servidor que debería realizarse en todos los equipos de los clientes? Si es posible, nos ahorrará tiempo y esfuerzo. ¿Alguien puede ayudar? Gracias por adelantado..

karthick87
fuente
1
¿Su empresa tiene un sitio local que solo es visto por los empleados? Si es así, ¿no puede agregar el script al sitio para que cuando el sitio se cargue también cargue ese script?
freebird
Esta pregunta debe actualizarse para las herramientas dconf que Ubuntu ahora usa para fondos.
Jjed

Respuestas:

15

Configure un trabajo cron en todas las máquinas que ejecute un script donde verifique 1 lugar específico para nuevas imágenes. Script de muestra (no probado) con wget y ftp:

#!/bin/bash
wget -N -r -nH --cut-dirs=2 -t 180 -P /tmp ftp://user:[email protected]/dir/backgroundimage.gif
gconftool-2 --type string --set /desktop/gnome/background/picture_filename /tmp/backgroundimage.gif

Básicamente, la segunda línea debe modificarse según el método que utilice para cargar manualmente la imagen en las máquinas. Y luego configúrelo cronpara ejecutar este script para verificar cada hora o una vez al día en busca de nuevas imágenes.

Incluso podría configurarlo para recuperar un script donde ese script se ejecuta en la máquina del cliente y luego recupera las imágenes y cambia el fondo con gconftool-2. Esto le permitiría ejecutar más que cambiar un fondo.


Puede crear un trabajo cron con sudo crontab -e. Esto mostrará una línea similar a esta:

# m h  dom mon dow   command

(m minutos, h hora, dom día del mes, lun mes, dow día de la semana) y debajo puede agregar ...

0 * * * /path/to/executable

o

@hourly     /path/to/executable

haber /path/to/executablecorrido cada hora en punto. Eso sí: un script que pones aquí no comprende la variable de ruta a menos que la incluyas. Puede poner esto en la parte superior para incluir $SHELLy $PATH:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

De lo contrario, debe asegurarse de que su script utilice nombres de ruta completos para ejecutar comandos. Se puede encontrar más información sobre cron en el wiki de Ubuntu .

También puede usar el /etc/cron.hourlydirectorio para colocar un script allí que se ejecute cada hora. Temas de ejemplo con respecto a la última parte: ¿Qué tiene de malo mi configuración cron.hourly? y Cron.hora no correrá .

Rinzwind
fuente
Será bueno si actualiza la respuesta para agregar trabajo cron que busca nuevas imágenes cada 1 hora.
karthick87
4

Puede valer la pena instalar un marco de administración remoto como puppet . Por lo general, lleva algún tiempo instalarlo y configurarlo adecuadamente para su red, pero una vez que está allí, es bastante fácil copiar archivos en todas las máquinas (o solo un subconjunto de ellas), ejecutar scripts en ellas y demás.

Florian Diesch
fuente
¿Puedes por favor elaborar tu respuesta?
karthick87
3

Puede hacer que la configuración del fondo de pantalla sea obligatoria, lo que significa que los usuarios no podrán personalizar su fondo.

En Ubuntu 11.04 y versiones anteriores, este comando debería funcionar :

sudo gconftool-2 --direct --config-source \
xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set \
/desktop/gnome/background/picture_filename \ 
"/usr/share/backgrounds/cosmos/blue-marble-west.jpg"

En Ubuntu 11.10 (o cualquier sistema GNOME 3), debería poder hacer esto con :

  1. Cree un archivo / etc / dconf / profile / user con el contenido:

    user
    site
    
  2. Realice una configuración predeterminada creando un archivo /etc/dconf/db/site.d/background con el contenido:

    [org/gnome/desktop/background]
    picture-uri='file:///usr/share/backgrounds/company-wallpaper.jpg'
    
  3. Y finalmente haga que el valor predeterminado sea obligatorio creando /etc/dconf/db/site.d/locks/background con el contenido:

    /org/gnome/desktop/background/picture-uri
    
  4. La configuración de dconf debe compilarse para que funcione. Ejecutar sudo dconf update La primera vez que ejecute esto, deberá reiniciar para ver el efecto. Actualmente, hay un error en el que los usuarios seguirán viendo el selector de fondo normal; en realidad no cambiará el fondo.

¡Combine esta solución con algo como títere para propagar esta configuración a todas las computadoras de su empresa!

Jeremy Bicha
fuente
Solución interesante ¿No podría simplemente alojar el fondo de pantalla en un almacenamiento compartido en algún lugar? ¿Como un sitio web normal, por ejemplo? Creo que sería una solución casi perfecta en este caso, ya que también facilitaría el cambio.
Jo-Erlend Schinstad
@ Jo-Erlend un sitio web normal no funcionaría ya que solo se permiten archivos: /// URI. Espero que un servidor de red esté bien siempre y cuando la computadora ya esté conectada a él.
Jeremy Bicha
1

Aquí está mi solución para Ubuntu 11.10 (o cualquier sistema GNOME 3):

#!/bin/bash
wget -N -r -nH --cut-dirs=2 -t 180 -P /tmp ftp://ozolniekuvsk.lv/public/foni/ozvsk.jpg
gsettings set org.gnome.desktop.background picture-uri "file:///tmp/ozvsk.jpg"

Hay dos partes lógicas. primero obtenga el fondo de pantalla, segundo conjunto de fondo de pantalla desde la ubicación descargada. ¡sencillo!

cyxob
fuente