Wie kann ich die Hintergrundbilder aller Kunden ändern?

13

Wie bereits erwähnt, betreiben wir in unserem Unternehmen mehr als 500 Ubuntu-PCs. Häufig haben wir unsere Unternehmensanzeigen als Hintergrundbild auf dem Clientcomputer festgelegt. Es ist schwierig für uns, das Hintergrundbild auf all diesen Rechnern einzeln zu ändern und es ist auch schwierig für uns, Skripte auf allen Rechnern über SSH auszuführen, um das Hintergrundbild zu ändern. Gibt es eine Möglichkeit, einen Server so einzurichten, dass, wenn wir das Hintergrundbild auf dem Server ändern, dies auf allen Clients durchgeführt werden sollte? Wenn es möglich ist, sparen wir Zeit und Mühe. Kann jemand helfen? Danke im Voraus..

karthick87
quelle
1
Verfügt Ihr Unternehmen über eine lokale Site, die nur von Mitarbeitern angezeigt wird? Wenn ja, können Sie das Skript nicht zur Site hinzufügen, sodass beim Laden der Site auch dieses Skript geladen wird?
Freebird
Diese Frage muss für die von Ubuntu jetzt für Hintergründe verwendeten dconf-Tools aktualisiert werden.
Jjed

Antworten:

15

Richten Sie auf allen Computern, auf denen ein Skript ausgeführt wird , einen Cron-Job ein, bei dem Sie einen bestimmten Ort auf neue Images überprüfen. Beispielskript (ungetestet) mit wget und 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

Grundsätzlich muss die 2. Zeile an die Methode angepasst werden, mit der Sie das Bild manuell auf die Maschinen laden. Richten Sie dann crondieses Skript ein, um stündlich oder einmal täglich nach neuen Bildern zu suchen.

Man könnte es sogar einen holen einrichten Skript , wo das Skript auf dem Client - Rechner excecuted wird und es holt dann die Bilder und ändert den Hintergrund mit gconftool-2. Auf diese Weise können Sie mehr ausführen als nur einen Hintergrund ändern.


Sie können einen Cron-Job mit erstellen sudo crontab -e. Dies wird eine Zeile ähnlich der folgenden anzeigen:

# m h  dom mon dow   command

(m Minuten, h Stunden, dom Tag des Monats, mon Monat, dow Tag der Woche) und darunter könnte man hinzufügen ...

0 * * * /path/to/executable

oder

@hourly     /path/to/executable

hat /path/to/executablejede Stunde auf der Stunde. Wohlgemerkt: Ein Skript, das Sie hier einfügen, versteht die Pfadvariable nur, wenn Sie sie einschließen. Sie können dies oben einfügen, um Folgendes $SHELLeinzuschließen $PATH:

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

Andernfalls müssen Sie sicherstellen, dass Ihr Skript vollständige Pfadnamen verwendet, um Befehle auszuführen. Weitere Informationen zu cron finden Sie im Ubuntu-Wiki .

Sie können das /etc/cron.hourlyVerzeichnis auch verwenden , um dort ein Skript abzulegen, das stündlich ausgeführt wird. Beispielthemen zum letzten Teil: Was stimmt nicht mit meiner Konfiguration von cron.hourly? und Cron.hourly läuft nicht .

Rinzwind
quelle
Es ist schön, wenn Sie die Antwort für das Hinzufügen eines Cron-Jobs aktualisieren, der alle 1 Stunde nach neuen Bildern sucht.
Karthick87
4

Es kann sich lohnen, ein Remote-Verwaltungsframework wie puppet zu installieren . Die ordnungsgemäße Installation und Konfiguration für Ihr Netzwerk dauert in der Regel einige Zeit, aber wenn es erst einmal vorhanden ist, können Sie ganz einfach Dateien auf alle Computer (oder nur einen Teil davon) kopieren, Skripte auf diesen ausführen und so weiter.

Florian Diesch
quelle
Können Sie bitte Ihre Antwort ausarbeiten?
karthick87
3

Sie können die Hintergrundeinstellung als obligatorisch festlegen, sodass Benutzer ihren Hintergrund nicht anpassen können.

In Ubuntu 11.04 und früher sollte dieser Befehl funktionieren :

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"

In Ubuntu 11.10 (oder einem GNOME 3 - System), sollten Sie in der Lage sein , dies zu tun mit :

  1. Erstellen Sie eine Datei / etc / dconf / profile / user mit folgendem Inhalt:

    user
    site
    
  2. Nehmen Sie eine Standardeinstellung vor, indem Sie eine Datei /etc/dconf/db/site.d/background mit folgendem Inhalt erstellen:

    [org/gnome/desktop/background]
    picture-uri='file:///usr/share/backgrounds/company-wallpaper.jpg'
    
  3. Und schließlich machen Sie den Standard verbindlich, indem Sie /etc/dconf/db/site.d/locks/background mit den folgenden Inhalten erstellen:

    /org/gnome/desktop/background/picture-uri
    
  4. dconf-Einstellungen müssen kompiliert werden, damit sie ausgeführt werden können. Wenn sudo dconf update Sie dies zum ersten Mal ausführen, müssen Sie einen Neustart durchführen, um den Effekt zu sehen. Gegenwärtig gibt es einen Fehler, bei dem den Benutzern immer noch die normale Hintergrundauswahl angezeigt wird. es wird den Hintergrund einfach nicht wirklich ändern.

Kombinieren Sie diese Lösung mit einer Marionette, um diese Einstellung auf alle Computer in Ihrem Unternehmen zu übertragen!

Jeremy Bicha
quelle
Interessante Lösung. Wäre es ihm nicht möglich, das Hintergrundbild einfach irgendwo auf einem gemeinsam genutzten Speicher zu hosten? Wie zum Beispiel eine normale Website? Ich denke, das wäre in diesem Fall eine fast perfekte Lösung, da sich dadurch auch leicht umstellen ließe.
Jo-Erlend Schinstad
@ Jo-Erlend eine normale Website würde nicht funktionieren, da nur file: /// URIs erlaubt sind. Ich gehe davon aus, dass ein Netzwerkserver in Ordnung wäre, solange der Computer bereits mit ihm verbunden ist.
Jeremy Bicha
1

Hier ist meine Lösung für Ubuntu 11.10 (oder ein beliebiges GNOME 3-System):

#!/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"

Es gibt zwei logische Teile. Zuerst das Hintergrundbild abrufen, dann das Hintergrundbild vom heruntergeladenen Speicherort festlegen. einfach!

cyxob
quelle