如何更换所有客户端的壁纸?

如何更换所有客户端的壁纸?

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

答案1

设置计划任务在所有机器上执行一个脚本,检查 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

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

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


你可以用 创建 cron 任务sudo crontab -e。这将显示类似以下内容的行:

# m h  dom mon dow   command

(m 分钟,h 小时,dom 月份中的某天,mon 月份,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 维基百科

您还可以使用该/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 系统)中,你应该能够做到这一点

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

答案4

请遵循以下五个步骤:

  1. 在centos/ubuntu中安装该clusterssh工具,获取多系统远程会话阅读有关 clusterssh 的更多信息

  2. clusterssh.sh在根目录中创建一个名为的文件。
    例如:vim /root/.clusterssh.sh

    #!/bin/bash
    cssh  -l <username> <ip addresses to connnect>
    :wq
    

    一旦你获得了多个linux主机的shell。
    登录到用户。

  3. 使用root登录复制壁纸文件
    例如:

    scp [email protected]:/root/Downloads/wallpaper.jpg(Source)  /home (Destination)
    

    它将提示输入密码,输入源系统的密码

  4. 运行此命令来克服“无法显示错误”

    $export DISPLAY=:0
    

    或者

    $export DISPLAY=:1.0
    
  5. 从用户登录运行以下命令,我们需要设置壁纸

    pcmanfm  --set-wallpaper=”/home/wallaper.jpg”
    

    如果不允许用户设置壁纸,我们需要授予该用户 sudo 权限,使用以下流程。

    转到#nano /etc/sudoersroot 下方并输入

    Username ALL=/usr/bin/pcmanfm #command location
    

繁荣!在这里您可以一次性获得多个系统上的壁纸。

相关内容