如何更換所有客戶端的桌布?

如何更換所有客戶端的桌布?

如同之前所說,我們公司運行著 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工具取得多個系統的遠端會話閱讀有關 clustersh 的更多信息

  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
    

繁榮!在這裡,您可以一鍵獲取多個系統上的壁紙。

相關內容