Как поменять обои всех клиентов?

13

Как уже говорилось, в нашей компании работает более 500 компьютеров с Ubuntu. Часто мы использовали рекламу нашей компании в качестве обоев на клиентском компьютере. Нам трудно менять обои на всех этих машинах по очереди, а также нам трудно выполнить скрипт на каждой машине через SSH для смены обоев. Есть ли способ настроить сервер, например, если мы изменим обои на сервере, это должно быть сделано на всех клиентских компьютерах. Если это возможно, это сэкономит наше время и усилия. Кто-нибудь может помочь? Заранее спасибо..

karthick87
источник
1
Есть ли в вашей компании локальный сайт, который просматривается только сотрудниками? Если да, то не можете ли вы добавить скрипт на сайт, чтобы при загрузке сайта он также загружал этот скрипт?
freebird
Этот вопрос необходимо обновить для инструментов dconf, которые Ubuntu теперь использует для фонов.
Джед

Ответы:

15

Установите задание cron на всех машинах, где выполняется сценарий, в котором вы проверяете 1 конкретное место для новых образов. Пример (непроверенный) сценария с wget и ftp:

#!/bin/bash
wget -N -r -nH --cut-dirs=2 -t 180 -P /tmp ftp://user:password@name.remoteserver.com/dir/backgroundimage.gif
gconftool-2 --type string --set /desktop/gnome/background/picture_filename /tmp/backgroundimage.gif

Как правило, 2-я строка должна быть изменена на метод, который вы используете для ручной загрузки изображения на машины. А затем настроить cronвыполнение этого сценария, чтобы каждый час или один раз в день проверять наличие новых изображений.

Вы даже можете настроить его на выбор сценария, в котором этот сценарий исполняется на клиентском компьютере, а затем извлекает изображения и изменяет фон с помощью gconftool-2. Это позволит вам выполнить больше, чем просто изменить фон.


Вы можете создать работу cron с sudo crontab -e. Это покажет строку, похожую на эту:

# m h  dom mon dow   command

(m минут, h час, день месяца месяца, месяц месяца, день недели недели) и под ним вы можете добавить ...

0 * * * /path/to/executable

или

@hourly     /path/to/executable

чтобы было /path/to/executableработать каждый час на час. Имейте в виду: скрипт, который вы вставили сюда, не понимает переменную пути, если вы ее не включите. Вы можете поместить это сверху, чтобы включить $SHELLи $PATH:

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

В противном случае вам нужно убедиться, что ваш скрипт использует полные пути для выполнения команд. Больше информации о cron можно найти в вики Ubuntu .

Вы также можете использовать /etc/cron.hourlyкаталог, чтобы поместить туда скрипт, который запускается каждый час. Примеры тем, относящихся к последней части: Что не так с моей конфигурацией cron.hourly? и Cron.hourly не будет работать .

Rinzwind
источник
Будет хорошо, если вы обновите ответ для добавления задания cron, которое проверяет наличие новых изображений каждые 1 час.
karthick87
4

Может быть, стоит установить инфраструктуру удаленного администрирования, например, puppet . Обычно требуется некоторое время, чтобы правильно установить и настроить его для вашей сети, но, как только он там появится, довольно легко скопировать файлы на все машины (или только их подмножество), запустить сценарии на них и тому подобное.

Флориан Диш
источник
Можете ли вы разработать ваш ответ?
karthick87
3

Вы можете сделать настройку обоев обязательной, это означает, что пользователи не смогут настраивать свой фон.

В Ubuntu 11.04 и более ранних версиях эта команда должна работать :

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"

В Ubuntu 11.10 (или любой системе GNOME 3) вы можете сделать это с помощью :

  1. Создайте файл / etc / dconf / profile / user с содержимым:

    user
    site
    
  2. Установите настройку по умолчанию, создав файл /etc/dconf/db/site.d/background с содержимым:

    [org/gnome/desktop/background]
    picture-uri='file:///usr/share/backgrounds/company-wallpaper.jpg'
    
  3. И, наконец, сделайте значение по умолчанию обязательным, создав /etc/dconf/db/site.d/locks/background с содержимым:

    /org/gnome/desktop/background/picture-uri
    
  4. Настройки dconf должны быть скомпилированы для работы, поэтому запустите sudo dconf update При первом запуске вы должны перезагрузиться, чтобы увидеть эффект. В настоящее время существует ошибка, при которой пользователи по-прежнему будут видеть обычный переключатель фона; это просто не изменит фон.

Объедините это решение с чем-то вроде кукольного, чтобы распространить этот параметр на все компьютеры в вашей компании!

Джереми Бича
источник
Интересное решение. Разве он не сможет просто разместить обои в общем хранилище где-нибудь? Например, обычный сайт? Я думаю, что это было бы почти идеальным решением в этом случае, поскольку это также позволило бы легко переключаться.
Джо-Эрленд Шинстад
@ Jo-Erlend нормальный веб-сайт не будет работать, так как разрешены только URI файлов: ///. Я ожидаю, что сетевой сервер будет в порядке, хотя компьютер уже подключен к нему.
Джереми Бича
1

Вот мое решение для Ubuntu 11.10 (или любой системы 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"

Есть две логические части. сначала получить обои, второй установить обои из загруженного места. просто!

cyxob
источник