すべてのクライアントの壁紙を変更する方法は?

すべてのクライアントの壁紙を変更する方法は?

前述のとおり、当社では 500 台以上の Ubuntu PC を運用しています。クライアント マシンの壁紙として、会社の広告を設定することがよくあります。これらすべてのマシンの壁紙を 1 台ずつ変更するのは困難です。また、SSH 経由で各マシンでスクリプトを実行して壁紙を変更するのも困難です。サーバーで壁紙を変更すると、すべてのクライアント マシンに反映されるようにサーバーを設定する方法はありますか。可能であれば、時間と労力を節約できます。どなたか助けていただけませんか。よろしくお願いします。

答え1

設定するcronジョブすべてのマシンで、新しいイメージがあるかどうか特定の場所を確認するスクリプトを実行します。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基本的に、2行目は、画像をマシンに手動でロードするために使用する方法に変更する必要があります。

取得するように設定することもできます脚本このスクリプトはクライアント マシン上で実行され、画像を取得して 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

毎時 00 分に実行されるようにします/path/to/executable。注意: ここに記述したスクリプトは、パス変数を組み込まない限り、パス変数を認識しません。先頭に記述して組み込むことができます$SHELL$PATH

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

それ以外の場合、スクリプトがフルパス名を使用してコマンドを実行することを確認する必要がありますUbuntu ウィキ

/etc/cron.hourlyディレクトリを使用して、1 時間ごとに実行されるスクリプトを配置することもできます。最後の部分に関するトピックの例: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

これらの5つのステップに従ってください。

  1. clusterssh複数のシステムのリモートセッションを取得するには、centos/ubuntuにツールをインストールします。clusterssh についてさらに詳しく

  2. clusterssh.shルートディレクトリに名前が付け
    られたファイルを作成します。vim /root/.clusterssh.sh

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

    複数の Linux ホストのシェルを取得したら、
    ユーザーにログインします。

  3. ルートログインを使用して壁紙ファイルをコピーする
    例:

    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/sudoersルートに移動して下へ進む

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

そしてブーム!ここでは、複数のシステムの壁紙を一度に取得できます。

関連情報