
Как уже говорилось, в нашей компании работает более 500 компьютеров с Ubuntu. Часто мы устанавливали рекламу нашей компании в качестве обоев на клиентских машинах. Нам сложно менять обои на всех этих машинах по одной, а также нам сложно выполнять скрипт на каждой машине через SSH, чтобы менять обои. Есть ли способ настроить сервер так, чтобы при смене обоев на сервере это влияло на все клиентские машины? Если это возможно, это сэкономит наше время и усилия. Может ли кто-нибудь помочь? Заранее спасибо..
решение1
Настройтезадание cronна всех машинах, которые выполняют скрипт, в котором вы проверяете 1 определенное место на наличие новых изображений. Пример (непроверенного) скрипта с wget и 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
По сути, 2-ю строку нужно изменить на метод, который вы используете для ручной загрузки изображения на машины. А затем настроить cron
выполнение этого скрипта для проверки каждый час или раз в день на наличие новых изображений.
Вы даже можете настроить его на получениесценарийгде этот скрипт выполняется на клиентской машине, а затем он извлекает изображения и меняет фон с помощью gconftool-2. Это позволит вам выполнить больше, чем просто изменить фон.
Вы можете создать задание cron с помощью sudo crontab -e
. Это покажет строку, похожую на эту:
# m h dom mon dow command
(м. минуты, ч. часы, д. день месяца, пн. месяц, д. день недели) и под ним вы можете добавить ...
0 * * * /path/to/executable
или
@hourly /path/to/executable
чтобы /path/to/executable
запускался каждый час в час. Имейте в виду: скрипт, который вы здесь разместите, не понимает переменную path, если вы ее не включите. Вы можете поместить это вверху, чтобы включить $SHELL
и $PATH
:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
В противном случае вам нужно убедиться, что ваш скрипт использует полные имена путей для выполнения команд. Более подробную информацию о cron можно найти наУбунту вики.
Вы также можете использовать /etc/cron.hourly
каталог, чтобы поместить туда скрипт, который будет запускаться каждый час. Примеры тем, касающихся последней части:Что не так с моей конфигурацией cron.hourly?иCron.hourly не запускается.
решение2
Может быть, стоитустановить фреймворк удаленного администрирования, например puppet. Обычно требуется некоторое время, чтобы правильно установить и настроить его для вашей сети, но как только он будет установлен, станет довольно легко копировать файлы на все машины (или только на часть из них), запускать на них скрипты и т. д.
решение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) вы сможете сделать этос:
Создайте файл /etc/dconf/profile/user со следующим содержимым:
user site
Создайте настройки по умолчанию, создав файл /etc/dconf/db/site.d/background со следующим содержимым:
[org/gnome/desktop/background] picture-uri='file:///usr/share/backgrounds/company-wallpaper.jpg'
И наконец, сделайте значение по умолчанию обязательным, создав /etc/dconf/db/site.d/locks/background со следующим содержимым:
/org/gnome/desktop/background/picture-uri
Настройки dconf должны быть скомпилированы для работы, поэтому запустите
sudo dconf update
При первом запуске вам нужно будет перезагрузиться, чтобы увидеть эффект. В настоящее время естьошибкагде пользователи по-прежнему будут видеть обычный выбор фона; он просто не будет фактически менять фон.
Объедините это решение с чем-то вроде puppet, чтобы распространить эту настройку на все компьютеры в вашей компании!
решение4
Выполните следующие пять шагов:
Установите
clusterssh
инструмент в centos/ubuntu, чтобы получить удаленный сеанс нескольких систем.узнать больше о clustersshСоздайте файл с именем
clusterssh.sh
в корневом каталоге.
Например:vim /root/.clusterssh.sh
#!/bin/bash cssh -l <username> <ip addresses to connnect> :wq
Как только вы получите оболочку нескольких хостов Linux,
войдите в систему как пользователь.Скопируйте файл обоев, используя учетную запись root
. Например:scp [email protected]:/root/Downloads/wallpaper.jpg(Source) /home (Destination)
Будет запрошен пароль, введите пароль исходной системы
Запустите эту команду, чтобы устранить ошибку «Невозможно отобразить»
$export DISPLAY=:0
или
$export DISPLAY=:1.0
Запустите следующую команду из учетной записи пользователя, в которой нам нужно установить обои.
pcmanfm --set-wallpaper=”/home/wallaper.jpg”
В случае, если пользователю не разрешено устанавливать обои, нам необходимо предоставить этому пользователю разрешение sudo, используя приведенный ниже процесс.
Перейдите
#nano /etc/sudoers
и под root введитеUsername ALL=/usr/bin/pcmanfm #command location
ИБум!здесь вы получаете обои на нескольких системах за один клик.