Comment changer les fonds d'écran de tous les clients?

13

Comme indiqué précédemment, nous utilisons plus de 500 PC Ubuntu dans notre entreprise. Souvent, nous avions l'habitude de définir nos publicités comme fond d'écran dans la machine des clients. Il est difficile pour nous de changer les papiers peints dans toutes ces machines un par un et il nous est également difficile d'exécuter un script sur chaque machine via SSH pour changer le papier peint. Existe-t-il un moyen de configurer un serveur comme si nous modifions le fond d'écran sur le serveur, cela devrait être effectué sur toutes les machines des clients. Si cela est possible, cela nous fera économiser du temps et des efforts. Quelqu'un peut-il aider? Merci d'avance..

karthick87
la source
1
Votre entreprise possède-t-elle un site local qui n'est consulté que par les employés? Si c'est le cas, ne pouvez-vous pas ajouter le script dans le site, donc lorsque le site se charge, il charge également ce script?
freebird
Cette question doit être mise à jour pour les outils dconf qu'Ubuntu utilise maintenant pour les arrière-plans.
Jjed

Réponses:

15

Configurez un travail cron sur toutes les machines qui exécute un script dans lequel vous vérifiez 1 endroit spécifique pour de nouvelles images. Exemple de script (non testé) avec wget et 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

Fondamentalement, la 2e ligne doit être modifiée selon la méthode que vous utilisez pour charger manuellement l'image sur les machines. Et puis configurez cronpour exécuter ce script pour vérifier toutes les heures ou une fois par jour de nouvelles images.

Vous pouvez même le configurer pour récupérer un script où ce script est exécuté sur la machine cliente, puis il récupère les images et modifie l'arrière-plan avec gconftool-2. Cela vous permettrait d'exécuter plus que de changer un arrière-plan.


Vous pouvez créer un travail cron avec sudo crontab -e. Cela montrera une ligne similaire à ceci:

# m h  dom mon dow   command

(m minutes, h h, dom jour du mois, lundi mois, dow jour de la semaine) et en dessous, vous pouvez ajouter ...

0 * * * /path/to/executable

ou

@hourly     /path/to/executable

avoir /path/to/executablecouru toutes les heures à l'heure. Attention: un script que vous insérez ici ne comprend pas la variable path sauf si vous l'incluez. Vous pouvez mettre cela en haut pour inclure $SHELLet $PATH:

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

Sinon, vous devez vous assurer que votre script utilise des noms de chemin complets pour exécuter les commandes. Plus d'informations sur cron peuvent être trouvées sur le wiki Ubuntu .

Vous pouvez également utiliser le /etc/cron.hourlyrépertoire pour y placer un script qui s'exécute toutes les heures. Exemples de sujets concernant la dernière partie: Quel est le problème avec ma configuration cron.hourly? et Cron.hourly ne fonctionnera pas .

Rinzwind
la source
Ce sera bien si vous mettez à jour la réponse pour ajouter un travail cron qui recherche de nouvelles images toutes les 1 heure.
karthick87
4

Il peut être utile d' installer un cadre d'administration distant comme marionnette . Il faut généralement un certain temps pour l'installer et le configurer correctement pour votre réseau, mais une fois qu'il est là, il est assez facile de copier des fichiers sur toutes les machines (ou juste un sous-ensemble d'entre elles), d'exécuter des scripts sur elles et autres.

Florian Diesch
la source
Pouvez-vous pls élaborer votre réponse?
karthick87
3

Vous pouvez rendre le paramètre de fond d'écran obligatoire, ce qui signifie que les utilisateurs ne pourront pas personnaliser leur arrière-plan.

Dans Ubuntu 11.04 et versions antérieures, cette commande devrait fonctionner :

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"

Dans Ubuntu 11.10 (ou tout système GNOME 3), vous devriez pouvoir le faire avec :

  1. Créez un fichier / etc / dconf / profile / user avec le contenu:

    user
    site
    
  2. Définissez un paramètre par défaut en créant un fichier /etc/dconf/db/site.d/background avec le contenu:

    [org/gnome/desktop/background]
    picture-uri='file:///usr/share/backgrounds/company-wallpaper.jpg'
    
  3. Et enfin rendre la valeur par défaut obligatoire en créant /etc/dconf/db/site.d/locks/background avec le contenu:

    /org/gnome/desktop/background/picture-uri
    
  4. Les paramètres dconf doivent être compilés pour fonctionner, donc exécutez sudo dconf update La première fois que vous exécutez ceci, vous devrez redémarrer pour voir l'effet. Actuellement, il y a un bug où les utilisateurs verront toujours le sélecteur d'arrière-plan normal; cela ne changera tout simplement pas l'arrière-plan.

Combinez cette solution avec quelque chose comme une marionnette pour propager ce paramètre à tous les ordinateurs de votre entreprise!

Jeremy Bicha
la source
Solution intéressante. Ne pourrait-il pas simplement héberger le fond d'écran sur un stockage partagé quelque part? Comme un simple site Web normal, par exemple? Je pense que ce serait une solution presque parfaite dans ce cas, car cela faciliterait également le changement.
Jo-Erlend Schinstad
@ Jo-Erlend un site Web normal ne fonctionnerait pas car seuls les URI file: /// sont autorisés. Je m'attends à ce qu'un serveur réseau soit très bien tant que l'ordinateur y est déjà connecté.
Jeremy Bicha
1

voici ma solution pour ubuntu 11.10 (ou tout système 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"

il y a deux parties logiques. obtenir d'abord le fond d'écran, le deuxième fond d'écran défini à partir de l'emplacement téléchargé. Facile!

cyxob
la source