如何更改所有客户的墙纸?


13

如前所述,我们在公司中运行着500多台ubuntu PC。通常,我们经常将公司广告设置为客户计算机中的墙纸。我们很难一一更改所有这些机器中的墙纸,并且我们也很难通过SSH在每台机器中执行脚本来更改墙纸。有没有一种方法可以设置服务器,例如,如果我们更改服务器中的墙纸,则应在所有客户端计算机中生效。如果有可能,它将节省我们的时间和精力。有人可以帮忙吗?提前致谢..


1
贵公司是否有仅可供员工查看的本地站点?如果是这样,您是否不能将脚本添加到站点中,以便在站点加载时也加载该脚本?
freebird

这个问题需要针对Ubuntu现在用于背景的dconf工具进行更新。
杰德

Answers:


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

基本上,第二行需要更改为用于将图像手动加载到计算机的方法。然后设置cron执行该脚本以每小时或每天一次检查新图像。

您甚至可以将其设置为获取脚本,在客户端计算机上执行该脚本,然后使用gconftool-2获取图像并更改背景。除了更改背景之外,这还可以执行更多操作。


您可以使用创建一个cron作业sudo crontab -e。这将显示类似于以下内容的行:

# m h  dom mon dow   command

(m分钟,h小时,每月dom天,星期一,dow日),并在其下方可以添加...

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 Wiki

您还可以使用/etc/cron.hourly目录在该目录中放置一个每小时运行一次的脚本。关于最后一部分的示例主题:cron.hourly配置有什么问题?Cron.hourly将无法运行


如果您更新添加cron作业的答案(每1小时检查一次新图像)会很好。
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 。第一次运行此命令时,需要重新启动才能看到效果。当前,存在一个错误,用户仍然可以看到普通的背景选择器。它实际上并不会改变背景。

将此解决方案与诸如puppet之类的东西结合使用,可以将该设置推广到公司中的所有计算机!


有趣的解决方案。他不能简单地将墙纸托管在某个地方的共享存储中吗?例如,就像普通的网站一样?我认为,在这种情况下,这将是几乎完美的解决方案,因为这也使切换变得容易。
Jo-Erlend Schinstad 2011年

由于只允许file:/// URI,所以@ Jo-Erlend正常的网站将无法工作。我希望只要计算机已经连接到网络服务器就可以了。
Jeremy Bicha

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"

有两个逻辑部分。首先从下载位置获取墙纸,然后获取第二套墙纸。简单!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.