
Wie bereits erwähnt, betreiben wir in unserem Unternehmen mehr als 500 Ubuntu-PCs. Oft legen wir unsere Unternehmensanzeigen als Hintergrundbild auf den Client-Rechnern fest. Es ist für uns schwierig, die Hintergrundbilder auf all diesen Rechnern einzeln zu ändern, und es ist auch schwierig für uns, auf jedem Rechner über SSH ein Skript zum Ändern des Hintergrundbilds auszuführen. Gibt es eine Möglichkeit, einen Server so einzurichten, dass, wenn wir das Hintergrundbild auf dem Server ändern, dies auf allen Client-Rechnern wirksam wird? Wenn dies möglich ist, spart es uns Zeit und Mühe. Kann jemand helfen? Vielen Dank im Voraus.
Antwort1
Richten Sie einCron-Jobauf allen Maschinen, die ein Skript ausführen, mit dem Sie an einer bestimmten Stelle nach neuen Bildern suchen. 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 zweite Zeile in die Methode geändert werden, mit der Sie das Bild manuell auf die Maschinen laden. Richten Sie cron
dieses Skript dann so ein, dass es stündlich oder einmal täglich nach neuen Bildern sucht.
Sie können es sogar so einrichten, dass es eineSkriptwo dieses Skript auf dem Client-Rechner ausgeführt wird und dann die Bilder abruft und den Hintergrund mit gconftool-2 ändert. Dies würde Ihnen ermöglichen, mehr auszuführen, als nur einen Hintergrund zu ändern.
Sie können einen Cron-Job mit erstellen sudo crontab -e
. Dieser zeigt eine Zeile ähnlich dieser:
# m h dom mon dow command
(m Minuten, h Stunden, dom Tag des Monats, mon Monat, dow Tag der Woche) und darunter könnten Sie hinzufügen ...
0 * * * /path/to/executable
oder
@hourly /path/to/executable
jede Stunde zur vollen Stunde ausgeführt werden /path/to/executable
. Beachten Sie: Ein Skript, das Sie hier einfügen, versteht die Pfadvariable nicht, wenn Sie sie nicht einschließen. Sie können dies oben einfügen, um Folgendes $SHELL
einzuschließ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 auf derUbuntu-Wiki.
Sie können das /etc/cron.hourly
Verzeichnis auch verwenden, um dort ein Skript abzulegen, das stündlich ausgeführt wird. Beispielthemen zum letzten Teil:Was ist falsch an meiner cron.hourly-Konfiguration?UndCron.hourly läuft nicht.
Antwort2
Es kann sich lohnen,Installieren Sie ein Remote-Admin-Framework wie Puppet. Normalerweise dauert es eine Weile, bis es richtig installiert und für Ihr Netzwerk konfiguriert ist, aber wenn es erst einmal installiert ist, ist es ganz einfach, Dateien auf alle (oder nur einen Teil) der Maschinen zu kopieren, Skripte darauf auszuführen und so weiter.
Antwort3
Sie können die Hintergrundbildeinstellung obligatorisch machen, was bedeutet, dass Benutzer ihren Hintergrund nicht anpassen können.
In Ubuntu 11.04 und früher sollte dieser Befehlarbeiten:
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 jedem GNOME 3-System) sollten Sie dies tun könnenmit:
Erstellen Sie eine Datei /etc/dconf/profile/user mit dem Inhalt:
user site
Nehmen Sie eine Standardeinstellung vor, indem Sie eine Datei /etc/dconf/db/site.d/background mit dem folgenden Inhalt erstellen:
[org/gnome/desktop/background] picture-uri='file:///usr/share/backgrounds/company-wallpaper.jpg'
Und machen Sie schließlich die Standardeinstellung verbindlich, indem Sie /etc/dconf/db/site.d/locks/background mit dem folgenden Inhalt erstellen:
/org/gnome/desktop/background/picture-uri
dconf-Einstellungen müssen kompiliert werden, damit sie funktionieren. Führen Sie sie daher aus. Wenn
sudo dconf update
Sie dies zum ersten Mal ausführen, müssen Sie neu starten, um den Effekt zu sehen. Derzeit gibt es eineInsektwo den Benutzern weiterhin die normale Hintergrundauswahl angezeigt wird; der Hintergrund wird jedoch nicht geändert.
Kombinieren Sie diese Lösung mit etwas wie Puppet, um diese Einstellung auf allen Computern in Ihrem Unternehmen zu verbreiten!
Antwort4
Befolgen Sie diese fünf Schritte:
Installieren Sie das
clusterssh
Tool in CentOS/Ubuntu, um die Remotesitzung mehrerer Systeme zu erhaltenmehr über clusterssh erfahrenErstellen Sie eine Datei mit dem Namen
clusterssh.sh
im Stammverzeichnis.
Beispiel:vim /root/.clusterssh.sh
#!/bin/bash cssh -l <username> <ip addresses to connnect> :wq
Sobald Sie die Shell mehrerer Linux-Hosts erhalten.
Melden Sie sich als Benutzer an.Kopieren Sie die Hintergrundbilddatei mit dem Root-Login.
Beispiel:scp [email protected]:/root/Downloads/wallpaper.jpg(Source) /home (Destination)
Sie werden zur Eingabe des Passworts aufgefordert. Geben Sie das Passwort des Quellsystems ein.
Führen Sie diesen Befehl aus, um den Fehler „Kann nicht angezeigt werden“ zu beheben.
$export DISPLAY=:0
oder
$export DISPLAY=:1.0
Führen Sie den folgenden Befehl vom Benutzer-Login aus, in dem wir das Hintergrundbild festlegen müssen
pcmanfm --set-wallpaper=”/home/wallaper.jpg”
Falls der Benutzer das Hintergrundbild nicht festlegen darf, müssen wir diesem Benutzer die Sudo-Berechtigung erteilen. Verwenden Sie dazu das folgende Verfahren.
Gehen Sie zu
#nano /etc/sudoers
und geben Sie unterhalb von root einUsername ALL=/usr/bin/pcmanfm #command location
UndBoom!Hier bekommen Sie das Hintergrundbild auf einen Schlag auf mehrere Ihrer Systeme.