Jak zmienić tapety wszystkich klientów?

13

Jak powiedziano wcześniej, w naszej firmie działa ponad 500 komputerów ubuntu. Często ustawialiśmy reklamy naszej firmy jako tapetę na komputerze klienta. Trudno nam zmieniać tapety na wszystkich tych maszynach jeden po drugim, a także trudno jest nam wykonać skrypt na każdej maszynie przez SSH, aby zmienić tapetę. Czy istnieje sposób skonfigurowania serwera, np. Jeśli zmienimy tapetę na serwerze, powinno to zostać wykonane na wszystkich komputerach klienckich. Jeśli to możliwe, pozwoli to zaoszczędzić nasz czas i wysiłek. Czy ktoś może pomóc? Z góry dziękuję..

karthick87
źródło
1
Czy Twoja firma ma lokalną witrynę, którą wyświetlają tylko pracownicy? Jeśli tak, to czy nie możesz dodać skryptu do witryny, więc kiedy strona się ładuje, ładuje również ten skrypt?
freebird
To pytanie musi zostać zaktualizowane w przypadku narzędzi dconf, których Ubuntu używa teraz do tła.
Jjed

Odpowiedzi:

15

Skonfiguruj zadanie crona na wszystkich komputerach, które wykonują skrypt, w którym sprawdzasz 1 konkretne miejsce pod kątem nowych obrazów. Przykładowy (nieprzetestowany) skrypt z wget i 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

Zasadniczo druga linia musi zostać zmieniona na metodę używaną do ręcznego ładowania obrazu do maszyn. A następnie skonfiguruj go crondo wykonywania tego skryptu, aby sprawdzał co godzinę lub raz dziennie nowe obrazy.

Możesz nawet ustawić go tak, aby pobierał skrypt, w którym skrypt jest uruchamiany na komputerze klienta, a następnie pobiera obrazy i zmienia tło za pomocą gconftool-2. Umożliwiłoby to wykonanie więcej niż zmiana tła.


Możesz utworzyć zadanie cron za pomocą sudo crontab -e. Wyświetli się linia podobna do tej:

# m h  dom mon dow   command

(m minut, h godzina, dom dzień miesiąca, miesiąc miesiąca, dzień tygodnia tygodnia), a pod nim można dodać ...

0 * * * /path/to/executable

lub

@hourly     /path/to/executable

aby nie /path/to/executablekursują co godzinę na godzinę. Pamiętaj: skrypt, który tu umieścisz, nie zrozumie zmiennej ścieżki, chyba że ją uwzględnisz. Możesz umieścić to u góry, aby uwzględnić $SHELLi $PATH:

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

W przeciwnym razie musisz upewnić się, że skrypt używa pełnych nazw ścieżek do wykonywania poleceń. Więcej informacji na temat crona można znaleźć na wiki Ubuntu .

Możesz także użyć /etc/cron.hourlykatalogu, aby umieścić tam skrypt uruchamiany co godzinę. Przykładowe tematy dotyczące ostatniej części: Co jest nie tak z moją konfiguracją cron.hourly? i Cron.hourly nie będzie działać .

Rinzwind
źródło
Będzie miło, jeśli zaktualizujesz odpowiedź na dodanie zadania cron, które sprawdza nowe obrazy co 1 godzinę.
karthick87
4

Może być warto zainstalować zdalny framework administracyjny, taki jak marionetka . Zazwyczaj instalacja i konfiguracja sieci zajmuje trochę czasu, ale kiedy już tam jest, kopiowanie plików na wszystkie komputery (lub tylko ich podzbiór) jest dość łatwe, uruchamianie na nich skryptów i tak dalej.

Florian Diesch
źródło
Czy potrafisz opracować swoją odpowiedź?
karthick87
3

Możesz wprowadzić ustawienie tapety obowiązkowe, co oznacza, że ​​użytkownicy nie będą mogli dostosowywać tła.

W Ubuntu 11.04 i wcześniejszych polecenie to powinno działać :

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"

W Ubuntu 11.10 (lub dowolnym systemie GNOME 3) powinieneś być w stanie to zrobić za pomocą :

  1. Utwórz plik / etc / dconf / profile / user z zawartością:

    user
    site
    
  2. Wprowadź ustawienie domyślne, tworząc plik /etc/dconf/db/site.d/background z zawartością:

    [org/gnome/desktop/background]
    picture-uri='file:///usr/share/backgrounds/company-wallpaper.jpg'
    
  3. I wreszcie ustaw domyślne jako obowiązkowe, tworząc /etc/dconf/db/site.d/locks/background z zawartością:

    /org/gnome/desktop/background/picture-uri
    
  4. Ustawienia dconf muszą zostać skompilowane, aby działały, więc uruchom sudo dconf update Przy pierwszym uruchomieniu musisz ponownie uruchomić komputer, aby zobaczyć efekt. Obecnie występuje błąd, w którym użytkownicy nadal widzą normalny program wybierający tło; to po prostu nie zmieni tła.

Połącz to rozwiązanie z czymś w rodzaju marionetki, aby propagować to ustawienie na wszystkich komputerach w Twojej firmie!

Jeremy Bicha
źródło
Ciekawe rozwiązanie Czy nie byłby w stanie po prostu hostować tapety gdzieś na wspólnej pamięci? Na przykład jak zwykła strona internetowa? Myślę, że byłoby to prawie idealne rozwiązanie w tym przypadku, ponieważ ułatwiłoby to również zmianę.
Jo-Erlend Schinstad
@ Jo-Erlend normalna strona nie działałaby, ponieważ dozwolone są tylko URI plików: ///. Oczekuję, że serwer sieci byłby w porządku, o ile komputer jest już z nim podłączony.
Jeremy Bicha,
1

oto moje rozwiązanie dla Ubuntu 11.10 (lub dowolnego systemu 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"

są dwie logiczne części. najpierw pobierz tapetę, drugi zestaw tapet z pobranej lokalizacji. prosty!

cyxob
źródło
0

Wykonaj następujące pięć kroków:

  1. Zainstaluj clustersshnarzędzie w centos / ubuntu, aby uzyskać zdalną sesję wielu systemów, przeczytaj więcej o klastrach

  2. Utwórz plik o nazwie clusterssh.shw katalogu głównym.
    Na przykład :vim /root/.clusterssh.sh

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

    Po otrzymaniu powłoki wielu hostów Linux.
    Zaloguj się do użytkownika.

  3. Skopiuj plik tapety przy użyciu loginu root
    Na przykład:

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

    Zapyta o hasło, poda hasło do systemu źródłowego

  4. Uruchom to polecenie, aby przezwyciężyć błąd „Nie można wyświetlić błędu”

    $export DISPLAY=:0
    

    lub

    $export DISPLAY=:1.0
    
  5. Uruchom poniższe polecenie z poziomu logowania użytkownika, w którym musimy ustawić tapetę

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

    W przypadku, gdy użytkownik nie może ustawić tapety, musimy zezwolić sudo temu użytkownikowi, skorzystaj z poniższego procesu.

    Idź do #nano /etc/sudoersi poniżej root root

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

I bum! tutaj dostajesz tapetę na wielu systemach za jednym razem.

Rohit Dhande
źródło