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

如前所述,我们在公司运行了500多台ubuntu PC。 我们常常将公司广告设置为客户机中的壁纸。 我们很难一个接一个地更换所有这些机器中的壁纸,而且我们很难通过SSH在每台机器上执行脚本来更改壁纸。 有没有办法设置服务器,就像我们更改服务器中的壁纸一样,它应该在所有客户端机器中生效。 如果可能的话,它将节省我们的时间和精力。 有人可以帮忙吗? 提前致谢..

在执行脚本的所有计算机上设置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更改背景。 这将允许您执行更多而不是更改背景。


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

 # mh dom mon dow command 

(m分钟,h小时,dom日期,星期一,星期几),在它下面你可以添加……

 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不会运行 。

安装像puppet这样的远程管理框架可能是值得的。 通常需要一些时间才能为您的网络正确安装和配置它,但是一旦它存在,就可以很容易地将文件复制到所有机器(或只是其中的一部分),在它们上运行脚本等。

您可以强制设置壁纸,这意味着用户将无法自定义其背景。

在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之类的东西结合起来,将此设置传播到公司的所有计算机!

这是我对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" 

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