如前所述,我们公司运行着 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 系统)中,你应该能够做到这一点和:
创建文件 /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
请遵循以下五个步骤:
在centos/ubuntu中安装该
clusterssh
工具,获取多系统远程会话阅读有关 clusterssh 的更多信息clusterssh.sh
在根目录中创建一个名为的文件。
例如:vim /root/.clusterssh.sh
#!/bin/bash cssh -l <username> <ip addresses to connnect> :wq
一旦你获得了多个linux主机的shell。
登录到用户。使用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
和繁荣!在这里您可以一次性获得多个系统上的壁纸。