Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: On 25 Listopadu 2010, 16:14:31
-
Zdravím, mám udělaný takový skript pro synchonizaci pracovní plochy...tedy jakmile se změní něco na PC č.1, aby se to změnilo na PC č.2 a tím tak mám pracovní plochy naprosto stejné...Týká se to ale pouze nastavení - vzhledu. Potřeboval bych nějak zjistit, když mám na ploše/panelu ikonu, na co se odkazuje....tedy po kliknutí na tuto ikonu, jaký příkaz má vykonat, co má vlastně spustit...a tím zjistím název programu, který tam má být, tzn který se má doinstalovat...Výsledek je ten, že:
Na PC č.1 si nainstaluju nový program a vytvořím pro něj ikonu v panelu...Zapnu PC č.2, spustím skript, který mi upraví pracovní plochu dle PC č.1 a když zjistí, že má na panelu "neznámou" ikonu se spouštěcím odkazem např na "pidgin", tak aby mi tento program automaticky doinstaloval...
věděl by někdo, kde v konfigurácích se nachází tyto ikony a jejich příkaz ke spuštění? Případně jiný způsob, jak tohodle dosáhnout?
díky
-
gconftool -R /apps/panel/objects
-
Přesně to jsem hledal, díky ...
Každopádně mě tak napadá, že by to šlo ještě líp ...ne každý program je GUI (ssh, mutt, nmap atd) a tím pádem by tyto doinstalované nástroje nešly poznat...Takže udělám textový soubor, kde budu vypisovat konkrétní názvy balíků a na hostujícím PC pak budu testovat, jestli daný balík se na PC již nachází...pokud ano, přeskočí jej, pokud ne, nainstaluje...to vše na jeden klik + případné dopsání hesla na instalaci, ideální...Každopádně ten výpis se hodit bude..
díky, K+
-
S instalovanými balíky bych na to šel asi takto:
Na obou systémech bych si udělal seznam instalovaných balíků:
dpkg -l|grep "^ii "|awk '{print $2}'> soubor
Na počítači, který se má synchronizovat podle jiného pak soubory porovnám a doinstaluju:
list=`diff vzorový_soubor soubor | grep "^< " | awk '{print $2}' |tr "\n" " "`; sudo apt-get install $list
nebo naopak odinstaluju:
list=`diff vzorový_soubor soubor | grep "^> " | awk '{print $2}' |tr "\n" " "`; sudo apt-get purge $list
Abych nezapoměl.. pokud jsou ty systémy hardwarově jiné, je třeba vyřadit balíky, kterých se synchronizace nemá týkat. Je jasné, že např. instalovat ovladače nvidia na systém s ATI, nebo naopak ovladače odebrat, je nesmysl. Šlo by seznam třeba vyfiltrovat podle kategorie do které patří.. Další možností je vzít jen instalace za poslední období z /var/log/dpkg.log, pro každý měsíc se dělá log nový, minulý měsíc je pak ve /var/log/dpkg.log.1 atd.
Seznam instalací v posledních dvou měsících by se vypreparoval např. takto:
dpkg -l | grep "^ii " > /dev/shm/inst.list ; grep " install " /var/log/dpkg.log /var/log/dpkg.log.1 | awk '{print $4}' | sort | uniq | while read line;do [[ `grep "$line" /dev/shm/inst.list` ]] && echo $line ;done
-
Původně jsem podobný postup také zamýšlel...narazil jsem ale na problém softwaru třetích stran. Vezměme příklad, kdy instaluju úplně nový OS a chci, aby byl po zavedení totožný s tím mým. Mám tam ale programy Esmska, Ubuntu-Tweak, Opera, Skype a další....tyto balíky sice v seznamu budou, ale instalaci ukončí, pač balík nebude pro nový OS známý, proto bych nakonec asi zvolil ruční dopisování balíků...ono jich zase tolik nebude..udělám prvotní verzi souboru s nejpoužívanějšími balíky, to malinko času zabere, ale postupem času když sem tam doplním po jednom balíku, to už nebude žádná hrůza....samozřejmě mít vše plně zautomatizované by bylo fajn, ale nevím moc dobře, jak by podle názvu balíku systém zjistil, který zdroj softwaru si přidat a některé se musí ještě podepsat
-
A čo tak synchronizovať aj /etc/apt/sources.list ?
-
hmm, to je nápad ;D Jen to ještě neřeší asi problém s podepsáním klíče..ale to už by se doladit nějak dalo...díky všem
K+ samozřejmě
-
Jistě, zdroje se dají synchronizovat i s klíči, dají se identifikovat balíky, které nebyly instalovány ze zdrojů a zkusit je vytáhnout z cache pro instalaci na druhé peci.. Určitě se to dá zautomatizovat, jen to trochu promyslet.
-
Nebylo moc času, tak se zatím podělím s prozatimním řešením ...
Do souboru si vypisuju balíky, které chci synchronizovat - nakonec to asi takhle dopadne, pač jsem zjistil, že občas instaluju něco, co tam mám jen na test a nechci to mít na pc č.2...takže mám na pevno dáno, které balíky chci a které ne. Kromě tohoto textového souboru ukládám ještě sources.list, .bashrc a crontab.
Na serveru mám vytvořené 3 profily (Home, Work, Default), pod každým profilem je jiná konfigurace prostředí. Když instaluju někomu nový OS, dám "default" a udělá to komplet prostředí se všemi balíčky i nastavením (včetně compizu). Pracovní profil je Work, můj domácí Home...
Funguje to výborně. Díky rsync je synchronizace hodně rychlá. Pokud není nainstalováno vůbec nic a OS je čistý, tak to samozřejmě trvá dýl, pač se vše musí nainstalovat, ale to je normální..
Když někdo neznalý, kdo nezasahuje do nakonfigurované plochy a využívá systém tak, jak jej někdo nastavil (v tomhle případě já) a bude něco chtít nastavit, doinstalovat atd, tak najedu na svém PC do takového distra Ubuntu, které mám pro tyto Default účely ...nastavím, vše doinstaluju u sebe, napíšu na icq tomu dotyčnému jen "můžeš", on klikne na ikonu, kterou tam všem na panel dávám a udělá mu to přesně to, co jsem na tom zkušebním distru nastavil => co dotyčný chtěl. Už se těším na první komplexnější test :)
-
Tak ještě bych potřeboval radu..nastavení je opravdu bomba, uživatelská práce je cca na 60 vteřin. Zbytek dělá všechno PC a po čisté instalaci a po dokončení synchronizace je plocha téměř celá zkonfigurovaná.. Téměř proto, pač mi chybí ještě nastavit dvě věci..
1, Nastavení mnou předdefinovaného pozadí..chci, aby na pozadí byl nějaký mnou stanovený obrázek. Mám ho ve složce, jenže předpokládám, že cesta k němu je taková, jaká je na mém PC - tedy /home/moje_jmeno/zaloha/Wallpapers/pozadi.jpg
Pokud instaluji systém někomu jinému, bude mít jméno samozřejmě jiné...který konfigurák má tohle na svědomí? Potřeboval bych tam dopsat něco jako `whoami`, aby tam dopsal jméno současného existujícího uživatele..
2, to samé platí při nastavení nebeské báně v Compizu...opět je tam cesta /home/moje_jmeno/zaloha/Wallpapers/nebeska_ban.jpg. A opět bych potřeboval, aby se tam vždy doplnilo jméno existujícího uživatele ...
díky za tipy...
-
Jednak existují systémové proměnné $USER, nebo rovnou $HOME a pak je tu ~ které zastupuje ono $HOME.
tedy ~/zaloha/.......
-
A na nastavenie pozadia príkazom, by mohlo fungovať toto:
gconftool-2 --type string --set /desktop/gnome/background/picture_filename "/path/to/background.png"
-
Jednak existují systémové proměnné $USER, nebo rovnou $HOME a pak je tu ~ které zastupuje ono $HOME.
tedy ~/zaloha/.......
Tohle právě nefunguje ...když najedu na Systém > Předvolby > Manažer nastavení compizu - a tady do nastavení nebeské báně, tak tyto proměnné právě nefungují ...musím dát cestu /home/user, aby reagoval...proto nejspíš je třeba nastavit tohle v nějakém config souboru...asi...
Ten druhý příkaz na změnu obrázku mi nějak nefunguje, ale nějaká reakce proběhla (obrázek to z plochy smazalo - dal jsem tam cestu samozřejmě ke svému obrázku..pohraju si ještě s tou cestou)
každopádně díky
-
Mne to ide:
gconftool-2 --type string --set /desktop/gnome/background/picture_filename "/home/$USER/34808-1.png"
zmení pozadie, za daný súbor v mojom domovskom adresáry.
-
tedy ~/zaloha/.......
...proto nejspíš je třeba nastavit tohle v nějakém config souboru...asi...
Nepředpokládal jsem, že lezeš skriptem do Systém > Předvolby > Manažer nastavení compizu :) Nastavení Compizu je v GConf, dá se exportovat do xml souboru a opět importovat. S Compizem se komunikuje po D-Bus, z bashe příkazem dbus-send. Je co studovat :)
Ještě jsem zapoměl, do GConf můžeš posílat (nebo číst) nastavení pomocí gconftool, způsobem, jaký uvedl Rixx
-
tedy ~/zaloha/.......
...proto nejspíš je třeba nastavit tohle v nějakém config souboru...asi...
Nepředpokládal jsem, že lezeš skriptem do Systém > Předvolby > Manažer nastavení compizu :) Nastavení Compizu je v GConf, dá se exportovat do xml souboru a opět importovat. S Compizem se komunikuje po D-Bus, z bashe příkazem dbus-send. Je co studovat :)
Ještě jsem zapoměl, do GConf můžeš posílat (nebo číst) nastavení pomocí gconftool, způsobem, jaký uvedl Rixx
No, to je právě to..gconftool je mocná zbraň, kterou ale neovládám..zatím v tom nedokážu najít logiku, abych byl schopný cokoliv pomocí gconftool měnit..proto se tady ptám na ty "konfiguráky", ale mám na mysli vlastně jen ten příkaz přes gconftool...jako třeba změna té plochy - samozřejmě funguje..nedá se tady ani v klidu pracovat, člověk sedne za PC a už ho ženská odhání, měl jsem chybu v syntaxi :)
Rád bych nástroji gconftool porozumněl, abych si mohl měnit uplně cokoliv...zkusím ještě nějak udělat ten compiz a je to všechno
děkuji všem..
-
Heuréka: dbus-send --print-reply --type=method_call --dest=org.freedesktop.compiz /org/freedesktop/compiz/cube/screen0/skydome_image org.freedesktop.compiz.set string:"$HOME/zaloha/Wallpapers/nebeska_ban.jpg"
-
Přijmi gratulace :) S GConf to není složité, je to jednoduchá stromová struktura s klíči, kterou rychle pochopíš, když si pustíš aplikaci gconf-editor. Pomocí aplikace gconftool můžeš to samé co v editoru, dělat z příkazové řádky. Mimochodem gconftool a gconftool-2 jsou jeden a ten samý program, druhý název je novější, v systému jsou nyní takto duplicitně. Tedy man gconftool pro další info.
-
Pripájam sa ku gratulácii a možno by bolo dobré, keby si ten skriptík ukázal aj svetu :) Už keď si si dal toľko námahy. :)
-
Přijmi gratulace :) S GConf to není složité, je to jednoduchá stromová struktura s klíči, kterou rychle pochopíš, když si pustíš aplikaci gconf-editor. Pomocí aplikace gconftool můžeš to samé co v editoru, dělat z příkazové řádky. Mimochodem gconftool a gconftool-2 jsou jeden a ten samý program, druhý název je novější, v systému jsou nyní takto duplicitně. Tedy man gconftool pro další info.
Děkuji, děkuji, snažím se :) gconftool už studuji, díky za navedení..
Pripájam sa ku gratulácii a možno by bolo dobré, keby si ten skriptík ukázal aj svetu :) Už keď si si dal toľko námahy. :)
To je jasný, zrovna to pořádně testuju, ať si neudělám ostudu :-) V podstatě to teď už bylo ok, jen nevím, proč mi to na úplném konečném příkazu ("/etc/init.d/gdm restart") skončilo...efekt měl být ten, že se restartne GDM a naběhne s novým nastavením...on se ale jen vypnul a kousnul se, takže jsem musel restartovat sám...pak naběhnul v pohodě...asi tam dám příkaz "reboot", ať naběhne komplet celý systém znovu..tím se to vyřeší...jinak docela dobrý, vše se nastavilo, supr..
- čistý čas uživatele je cca do minuty (v podstatě jen zadávání hesla na server, odkud se tahá konfigurace a zadání admin hesla pro instalaci na PC...)
- celkový čas instalace je asi (dle připojení) 30min, ale je tam toho pro běžného uživatele víc než dost, snad všechno, co by si mohl na úvod přát
od programu na zasílání sms (Esmska), přes Pidgin, Skype, Thunderbird, Ubuntu-tweak, krusader, Gimp, Audacious (ekvivalent winampu), devede (konvert DVD > AVI > Video CD), Desktop recorder (nahrávání obrazovky), přehrávaču videí VLC, mplayer, vypalovacího programu K3B, Avidemux (střih videa), nmap (nástroj na mapování sítě) a další... Vše nastaveno na panelech pro snadné spuštění + ikony sledování systému, Vynucení ukončení špatně chovajících se aplikací, nastavení Compizu (kostka atd) + ikona pro spuštění mého konzolového prográmku, který umí:
- podrobné vyhledávání souborů dle názvu souboru, obsahu souboru - obojí i dle přípon
- hromadné přejmenování souborů
- hromadné odstranění diakritiky
- convert Audio > Wav, Audio > MP3, Audio > OGG Vorbis, Wav > MP3
- hromadná změna rozlišení fotek (640x480, 800x600, 1024x768)
- Stahování z youtube (stačí zadat URL + název, jak se má výsledný soubor jmenovat), convertuje do: MP3, MP4, MPG, DivX, XviD
+ další capinky ...
....dále nastavení ALIASů základních příkazů (pro malinko pokročilejší uživatele) a samozřejmě nastavení velmi krásné tapety :-)
A ať mi někdo řekne, že si s tím běžný uživatel nevystačí :)
-
Tak to je parádička, určite to bežnému človeku stačiť bude. A hlavne si do budúcnosti ušetríš kopu roboty. :)
-
Tak to je parádička, určite to bežnému človeku stačiť bude. A hlavne si do budúcnosti ušetríš kopu roboty. :)
A přesně kvůli tomu jsem to dělal...sice nastavení widlí trvá půl dne, u Linuxu cca 2 hodiny, možná i hodinu, ale furt u toho člověk musí sedět a všechno nastavovat..teď jen zadávám hesla a to je vše :)
-
Tak posílám slíbený skript ...je tam samozřejmě hodně co upravovat, zkušení borci si jistě poradí. Je ale krásně funkční a pro nastavení běžnému uživateli plně dostačující. Univerzální pro jakýkoliv počet pracovních ploch / profilů, případně synchronizaci čehokoliv, jen je nutné si skript pak upravit...Teď, standartně ukládá následující:
.gnome2_private
.gnome2
.gconfd
.gconf
.basrhc
crontab
sources.list
..Já tam mám přihozené ještě pozadí plochy + pozadí nebeské báně - hned na začátku skriptu nutno zadat cestu k těmto souborům, aby se to mohlo nastavit.
1, Skript vlož do souboru
2, Edituj soubor a nastav proměnné (hned na začátku, týká se jen pozadí pracovní plochy)
3, Spusť skript
4, Vyzve tě k zadání přihlašovacích údajů na tvůj server + název profilu
5, Otevře automaticky soubor v GEDITu, kde nastavíš balíčky, které chceš pro tento profil instalovat - týká se jen DOWNLOADu
6, Otevře automaticky soubor v GEDITu, kde nastavíš názvy složek (případně celé cesty), co všechno chceš ze svého profilu uložit na server - týká se UPLOADu
7, Proveď UPLOAD, čímž uložíš svůj aktuální profil...
....pak, na novém OS spustíš tento skript, kde nastavíš opět přihlašovací údaje + název STEJNÉHO profilu, který je na serveru uložen a dáš "DOWNLOAD"...Začnou se instalovat balíčky, které sis nastavil pro DOWNLOAD v bodu č.4 + všechny složky, které sis nastavil v bodě č.5 pro tento profil. Profilů je možno vytvořit libovolné množství
Poznámky:
Je nutné mít přístup na nějaký server přes SSH (nejlépe přes certifikáty, aby odpadlo otravné zadávání hesel)
Nejprve proveďte UPLOAD své zkonfigurované pracovní plochy...
Poté je možno přes DOWNLOAD tuto pracovní plochu stáhnout na nově nainstalovaný OS
Dá se použít i jako synchronizace mezi dvěma PC...na jednom PC dám UPLOAD, na druhém DOWNLOAD a opačně ...
Mně to už teď usnadňuje hodně práce, snad to někomu pomůže taky..
#!/bin/bash
clear
cd $HOME
if [ ! -d .synch_desktop ]; then echo -e "\033[32mVytvořena pracovní složka \".synch_desktop\" \033[0m"; mkdir .synch_desktop; sleep 1s; fi;
if [ -f Programovani/Cvert/updown_desktop.sh -a -f updown_desktop.sh ]; then echo -e "\033[31mMažu skript \"updown_desktop.sh\" z domovské složky ... \033[0m"; rm updown_desktop.sh; sleep 1s; fi;
########################################## NASTAVENÍ PROMĚNNÝCH #########################################################
user=`whoami`
ver="1.83"
############################################## FUNKCE ###################################################################
connect() {
echo -n "Zadejte libovolný jednoslovný název připojení (bez diakritiky): "
read label
echo "Zadejte uživatelské jméno, IP (nebo doménu) a číslo portu k serveru přes službu SSH: ";
echo -n "Uživatelské jméno: ";
read user_remote
echo -n "IP (doména): ";
read address
echo -n "Port SSH: ";
read port
echo
echo "Zadejte název nového profilu (např: Home)- JEDNOSLOVNÝ NÁZEV BEZ LOMÍTKA NA ZAČÁTKU I NA KONCI !!!";
echo -n "Název profilu: "
read path_default
echo
}
wallpapers() {
echo "TYTO ÚDAJE NEJSOU POVINNÉ (nenastavovat obrázek na pozadí = odentrovat)"
echo
echo -n "Zadejte cestu, kde se nachází složka se souborem s pozadí: "
read zaloha
echo -n "Zadejte složku, kde se nachází soubor s pozadím: "
read wallpapers
echo -n "Zadejte přesný název souboru s pozadím plochy (nepoužívat diakritiku a mezery): "
read path_desktop
echo -n "Zadejte přesný název souboru nebeské báně (nepoužívat diakritiku a mezery): "
read path_skydome
echo
}
connect_write() {
echo "Connect: $label #### Název přihlašovacího profilu" > $HOME/.synch_desktop/$label.cnt
echo "User: $user_remote #### Přihlašovací jméno vzdáleného serveru" >> $HOME/.synch_desktop/$label.cnt
echo "Address: $address #### IP (DNS) adresa vzdáleného serveru" >> $HOME/.synch_desktop/$label.cnt
echo "Port: $port #### Port vzdáleného serveru" >> $HOME/.synch_desktop/$label.cnt
echo "Profil: $path_default #### Název profilu" >> $HOME/.synch_desktop/$label.cnt
echo
}
wallpapers_write() {
echo "Cesta: $zaloha #### CESTA (nikoliv složka), ve které se nachází SLOŽKA s obrázkami pozadí (např: \$HOME)" > $HOME/.synch_desktop/$path_default/$path_default.wpp
echo "Wallpapers: $wallpapers #### název SLOŽKY, ve které se nachází obrázek pozadí (např: Pozadi - takže Pozadi se nachází na cestě: \$HOME/Pozadi)" >> $HOME/.synch_desktop/$path_default/$path_default.wpp
echo "Wall_desktop: $path_desktop #### název souboru obrázku, který chcete nastavit jako pozadí pracovní plochy (pozadi.jpg)" >> $HOME/.synch_desktop/$path_default/$path_default.wpp
echo "SkyDome: $path_skydome #### název souboru pozadí nebeské báně (nebeska_ban.jpg)" >> $HOME/.synch_desktop/$path_default/$path_default.wpp
echo
}
#########################################################################################################################
find $HOME/.synch_desktop/*.cnt &> /dev/null
if [ "$?" -eq 1 ]; then
echo -e "\033[31mNebylo detekováno žádné připojení k serveru\033[0m"
echo
echo "Vytvářím nové připojení"
echo
connect
connect_write
fi
while :; do
clear
echo "Synchonizace pracovní plochy - ver.$ver";
echo
echo "1, ROOT"
echo "2, USER"
echo
echo "9, UPDATE VERZE PROGRAMU"
echo "0 Zpět do hlavní nabídky"
echo
echo -n "Použít profil uživatele: "
read root
if [ $root == 0 ]; then exit;
elif [ $root == 1 ]; then $root = 1; break;
elif [ $root == 2 ]; then $root = 2; break;
elif [ $root == 9 ]; then
scp -P 26098 guest@80.95.111.27:guest/updown_desktop.sh $HOME/Programovani/Cvert
if [ $? -eq 0 ]; then
echo
echo -e "\033[32mUpdate úspěšně dokončen ..Spusťte program znovu \033[0m"
else
echo
echo -e "\033[31mUPDATE se z nějakého důvodu neprovedl, zkontrolujte připojení k internetu \033[0m"
fi
echo "Ukončuji ..."
sleep 2s;
exit
else
echo
echo -e "\033[31mZadána neexistující volba, zkuste to znovu ...\033[0m"
sleep 2s;
fi
done
find $HOME/.synch_desktop/*.cnt &> /dev/null
if [ $? -eq 0 ]; then
clear
echo -e "\033[36mVýpis nadefinovaných připojení\033[0m"
echo
cat $HOME/.synch_desktop/*.cnt | grep -i "connect" | awk '{print $2}'
echo
echo "0, Nové připojení"
echo -n "Jaké připojení použít? : "
read label
fi
if [ -f $HOME/.synch_desktop/$label.cnt ]; then
connect=`cat $HOME/.synch_desktop/$label.cnt | grep -i "connect" | awk '{print $2}'`
user_remote=`cat $HOME/.synch_desktop/$label.cnt | grep -i "user" | awk '{print $2}'`
address=`cat $HOME/.synch_desktop/$label.cnt | grep -i "address" | awk '{print $2}'`
port=`cat $HOME/.synch_desktop/$label.cnt | grep -i "port" | awk '{print $2}'`
echo
echo -e "\033[32mZjišťuji výpis profilů na vzdáleném serveru\033[0m"
echo -e "\033[32mPřipojuji ...\033[0m"; sleep 1s;
profiles=`ssh $user_remote@$address -p $port "ls -d Profiles/*/" > $HOME/.synch_desktop/profiles.log`
prom=`echo $?`
clear
echo "Synchonizace pracovní plochy - ver.$ver";
echo
echo -e "\033[36mVýpis aktuálních profilů: \033[0m"
echo
if [ $prom == 0 ]; then cat $HOME/.synch_desktop/profiles.log; else echo "Na serveru se nenachází žádný profil"; fi
echo
fi
##############################################################################################################################
if [ ! -f $HOME/.synch_desktop/$label.cnt ]; then
echo
connect
wallpapers
if [ ! -d $HOME/.synch_desktop/$path_default ]; then mkdir $HOME/.synch_desktop/$path_default; fi;
if [ $root == 1 ]; then
echo -n "Po potvrzení klávesy ENTER dojde k editaci souboru, kde dopište všechny instalační balíčky, které chcete mít synchronizované na svých PC (DOWNLOAD) v následujícím tvaru: ssh pidgin esmska skype balik5 balik6 balik7";
read nn
echo "Otvírám konfigurační soubor ..."
gedit $HOME/.synch_desktop/$path_default/$path_default.pfl
echo
fi
echo -n "Po potvrzení klávesy ENTER dojde k editaci souboru, kde dopište všechny cesty ke složkám, které chcete synchronizovat při vytváření profilu (UPLOAD) ";
read nn
echo "Otvírám konfigurační soubor ..."
gedit $HOME/.synch_desktop/$path_default/$path_default.upl
connect_write
wallpapers_write
else
while :; do
path_default=`cat $HOME/.synch_desktop/$label.cnt | grep "Profil" | awk '{print $2}'`;
echo -e "\033[36mPoužít profil \"$path_default\"? \033[0m"
echo
echo "1, ANO"
echo "2, NE, vytvořit nový profil"
echo
echo "3, Vytvořit nový CONNECT profil"
if [ -f $HOME/.synch_desktop/$label.cnt ]; then
echo "4, Editovat přihlašovací údaje nebo změnit profil"
fi
if [ -f $HOME/.synch_desktop/$path_default/$path_default.upl -a $HOME/.synch_desktop/$path_default/$path_default.pfl ]; then
if [ $root == 1 ]; then echo "5, Editovat instalační balíčky profilu \"$path_default\" pro DOWNLOAD"; fi;
echo "6, Editovat nastavení cest profilu \"$path_default\" pro UPLOAD"
echo "7, Editovat nastavení cest pozadí v profilu \"$path_default\""
else
if [ ! -d $HOME/.synch_desktop/$path_default ]; then mkdir $HOME/.synch_desktop/$path_default; fi;
echo
if [ $root == 1 ]; then
echo -n "Vytvářím soubor pro přidání/odebrání balíčků pro profil \"$path_default\". Potvrďte klávesou ENTER ";
read nn
echo "Otvírám konfigurační soubor ..."
gedit $HOME/.synch_desktop/$path_default/$path_default.pfl;
echo
fi
echo -n "Po potvrzení klávesy ENTER dojde k editaci souboru, kde dopište všechny cesty ke složkám, které chcete synchronizovat při vytváření profilu (UPLOAD) ";
read nn
echo "Otvírám konfigurační soubor ..."
gedit $HOME/.synch_desktop/$path_default/$path_default.upl
echo
if [ ! -f $HOME/.synch_desktop/$path_default/$path_default.wpp ]; then
wallpapers
wallpapers_write
fi
break
fi
echo
echo "0, Konec"
echo -n "Volba č.: ";
read re_path
if [ $re_path == "1" ]; then break;
elif [ $re_path == "2" ]; then
echo
echo "Zadejte nový název profilu pro nastavené připojení \"$label\" (např: Home)- JEDNOSLOVNÝ NÁZEV BEZ LOMÍTKA NA ZAČÁTKU I NA KONCI !!!";
echo -n "Název profilu: ";
read path_default
connect_write;
continue;
elif [ $re_path == 3 ]; then
connect
connect_write
echo "Program se nyní ukončí. Pro načtení nové konfigurace jej spusťte znovu !! Pokračujte klávesou ENTER"
read nn
exit
elif [ $re_path == 4 ]; then
echo
echo "Po uložení změn se program ukončí. Pro načtení nové konfigurace jej spusťte znovu !! Pokračujte klávesou ENTER"
read nn
echo "Otvírám konfigurační soubor ..."
gedit $HOME/.synch_desktop/$label.cnt
exit
elif [ $re_path == 5 -a $root == 1 ]; then
gedit $HOME/.synch_desktop/$path_default/$path_default.pfl
clear
continue
elif [ $re_path == 6 ]; then
gedit $HOME/.synch_desktop/$path_default/$path_default.upl
clear
continue
elif [ $re_path == 7 ]; then
gedit $HOME/.synch_desktop/$path_default/$path_default.wpp
clear
continue
elif [ $re_path == 0 ]; then exit
else
echo
echo -e "\033[31mZadána neexistující volba, zkuste to znovu\033[0m";
sleep 2s;
fi
done
fi
########################################################################################################################
zaloha=`cat $HOME/.synch_desktop/$path_default/$path_default.wpp | grep -i "cesta" | awk '{print $2}'`
wallpapers=`cat $HOME/.synch_desktop/$path_default/$path_default.wpp | grep -i "wallpapers" | awk '{print $2}'`
path_desktop=`cat $HOME/.synch_desktop/$path_default/$path_default.wpp | grep -i "wall_desktop" | awk '{print $2}'`
path_skydome=`cat $HOME/.synch_desktop/$path_default/$path_default.wpp | grep -i "skydome" | awk '{print $2}'`
path=$path_default
upload=`cat $HOME/.synch_desktop/$path_default/$path_default.upl`
while :; do
clear
echo "Synchonizace pracovní plochy - ver.$ver";
echo
if [ $root == 1 ]; then user_name=ROOT; elif [ $root == 2 ]; then user_name=USER; fi;
echo -e "Server: \033[33m$user_remote@$address:$port\033[0m"
echo -e "Uživatel: \033[33m$user_name\033[0m";
echo -e "Profil: \033[33m$path\033[0m";
echo
echo "1, Upload";
echo "2, Download";
if [ $root == 1 ]; then echo "3, Instalace balíčků beze změny pracovní plochy"; fi;
echo
echo "0, Exit";
echo -n "Volba č.: ";
read volba
echo
if [ $volba == 0 ]; then exit; fi
default() {
echo "Kontroluji pracovní složku pro ukládání profilů \"Profiles\" v kořenovém adresáři na serveru: "
ssh $user_remote@$address -p $port "if [ ! -d Profiles ]; then mkdir -p Profiles; echo -e '\033[32mPracovní složka \"Profiles\" vytvořena ...\033[0m'; fi"
path=Profiles/$path
echo "Kontroluji existující cestu \"$path\" na vzdáleném serveru: ";
ssh $user_remote@$address -p $port "if [ ! -d $path ]; then mkdir -p $path; echo -e '\033[32mSložka \"$path\" vytvořena ...\033[0m'; fi"
sleep 2s;
ssh $user_remote@$address -p $port "if [ ! -d $path/$zaloha ]; then mkdir -p $path/$zaloha; echo -e '\033[32mPracovní složka \"$zaloha\" vytvořena ...\033[0m'; fi"
if [ -d $HOME/.config/autostart ]; then
ssh $user_remote@$address -p $port "if [ ! -d $path/.config ]; then mkdir -p $path/.config; echo -e '\033[32mPracovní složka \".config\" vytvořena ...\033[0m'; fi"
fi
if [ -d $HOME/.mozilla/firefox ]; then
firefox=`cat .mozilla/firefox/profiles.ini | grep Path | sed 's/Path=//g'`
ssh $user_remote@$address -p $port "if [ ! -d $path/.mozilla/firefox ]; then mkdir -p $path/.mozilla/firefox; echo -e '\033[32mPracovní složka \".mozilla/firefox\" vytvořena ...\033[0m'; fi"
fi
if [ $root == "1" ]; then
rsync --delete --stats -avzh -e "ssh -p $port" .bashrc .gconf .gconfd .gnome2 .gnome2_private /etc/apt/sources.list /etc/crontab $user_remote@$address:$path;
else
rsync --delete --stats -avzh -e "ssh -p $port" .bashrc .gconf .gconfd .gnome2 .gnome2_private $user_remote@$address:$path;
fi;
if [ $zaloha != "####" -o $wallpapers != "####" ]; then
rsync -ave "ssh -p $port" $zaloha/$wallpapers $user_remote@$address:$path/$zaloha
fi
if [ -d $HOME/.config/autostart ]; then
rsync --delete --stats -avzh -e "ssh -p $port" .config/autostart $user_remote@$address:$path/.config;
fi
rsync --delete --stats -avzh -e "ssh -p $port" .mozilla/firefox/$firefox .mozilla/firefox/profiles.ini $user_remote@$address:$path/.mozilla/firefox;
while read line; do if [ -e $line ]; then rsync -ave "ssh -p $port" $line $user_remote@$address:$path; else echo -e "\033[31mSoubor nebo adresář $line neexistuje\033[0m"; fi; done < $HOME/.synch_desktop/$path_default/$path_default.upl
echo
echo -e "\033[32mUpload na server dokončen ...\033[0m"
echo
exit;
}
########################################################################################################################
if [ $volba == 1 ]; then
while :; do
echo -n "Uložit všechny skryté soubory a adresáře? (y/n): ";
read hidden
if [ $hidden == y ];then
echo ".[^.]*" >> $HOME/.synch_desktop/$path_default/$path_default.upl;
break;
elif [ $hidden == n ]; then
while read line; do if [ "$line" != ".[^.]*" ]; then echo "$line" >> $HOME/.synch_desktop/files; fi; done < $HOME/.synch_desktop/$path_default/$path_default.upl
mv $HOME/.synch_desktop/files $HOME/.synch_desktop/$path_default/$path_default.upl
break;
else
echo
echo -e "\033[31mZvolte prosím buď \"y\" nebo \"n\" ...\033[0m";
sleep 2s;
fi;
done
echo "Ukládám Vaší pracovní plochu na server $user_remote@$address:$port, do \"$path\" :"
sleep 2s;
default
elif [ $volba == 2 ]; then
if [ ! -d $HOME/.synch_desktop/$path_default/backup -a $root == 1 ]; then
echo "Vytvářím zálohu systémových konfiguračních souborů do složky $HOME/.synch_desktop/$path_default/backup";
echo
mkdir $HOME/.synch_desktop/$path_default/backup;
rsync --delete --stats -avzh .bashrc /etc/hosts /etc/crontab /etc/apt/sources.list /etc/X11/xorg.conf /etc/fstab $HOME/.synch_desktop/$path_default/backup
echo
echo -e "\033[32mZáloha kompletní ... \033[0m";
fi
if [ ! -f $HOME/.synch_desktop/$path_default/$path_default.pfl -a $root == 1 ]; then
packages='compizconfig-settings-manager x11vnc ssh nmap krusader audacious meld thunderbird k3b pidgin gimp esmska skype ubuntu-tweak dvdbackup imagemagick icedax youtube-dl ffmpeg ncftp mencoder lame cdda2wav mplayer vlc ubuntu-restricted-extras gtk-recordmydesktop devede avidemux conky vim sun-java6-jre sun-java6-bin sun-java6-plugin deskbar-applet libnotify-bin compiz-fusion-plugins-extra sshfs'
#lamp-server^ phpmyadmin netbeans
else
packages=`cat $HOME/.synch_desktop/$path_default/$path_default.pfl`
fi
path=Profiles/$path
if [ $root == 1 ]; then
echo -e "\033[32mAktualizuji konfigurační soubor zdrojů softwaru ... \033[0m";
echo
scp -P $port $user_remote@$address:$path/sources.list /tmp
sudo mv /tmp/sources.list /etc/apt/sources.list
echo
echo -e "\033[32mNahrávám klíč pro program Esmska ...\033[0m";
echo
##### Klíč pro program Esmska #####
sudo wget -q -O - http://repo.palatinus.cz/repo.key | sudo apt-key add -
echo
echo -e "\033[32mNahrávám klíč pro program Ubuntu-Tweak ...\033[0m";
echo
##### Klíč pro program Ubuntu-Tweak #####
sudo add-apt-repository ppa:tualatrix/ppa;
echo
echo -e "\033[32mProvádím UPDATE systému ...\033[0m";
echo
sudo apt-get update
echo
echo -e "\033[32mProvádím aktualizace systému ... \033[0m";
echo
sudo apt-get upgrade -y
echo
echo -e "\033[32mInstaluji přednastavené balíky ze souboru \"$path_default.pfl\" \033[0m";
echo
sudo apt-get install -y $packages
echo
echo -e "\033[32mProvádím úklid systému ...\033[0m";
echo
sudo apt-get remove openjdk*
sudo apt-get autoremove -y
sleep 2s;
fi
echo
echo -e "\033[32mZavádím nový profil ... \033[0m";
echo
rsync -ave "ssh -p $port" $user_remote@$address:$path/ ~/
if [ -d $HOME/.config/autostart ]; then
for i in $(find $HOME/.config/autostart/*.desktop | xargs grep -l /home/); do
grep=`cat $i | grep Exec`;
declare -a var;
var=(`echo $grep | tr '/' ' '`);
home_user=${var[2]}
cat $i | sed "s/$home_user/$user/g" > $HOME/text.txt && mv $HOME/text.txt $i
cat $i | sed "s/X-GNOME-Autostart-enabled=false/X-GNOME-Autostart-enabled=true/g" > $HOME/text.txt && mv $HOME/text.txt $i
if [ -f $HOME/.config/autostart/.conkystart.desktop ]; then
cat $HOME/.config/autostart/.conkystart.desktop | sed "s/$home_user/$user/g" > $HOME/text.txt && mv $HOME/text.txt $HOME/.config/autostart/.conkystart.desktop
fi
done
fi
for i in $(find $HOME/.gnome2/panel2.d/default/launchers/*.desktop | xargs grep -l /home/); do
grep=`cat $i | grep Exec`;
declare -a var;
var=(`echo $grep | tr '/' ' '`);
home_user=${var[2]}
cat $i | sed "s/$home_user/$user/g" > $HOME/text.txt && mv $HOME/text.txt $i
done
if [ $root == 1 ]; then sudo mv $HOME/crontab /etc/crontab; fi
if [ -d $HOME/Programovani ]; then
cat $HOME/.gnome2/panel2.d/default/launchers/cvert.desktop | sed "s/home\/\([^']*\)\/Programovani/home\/$user\/Programovani/g" > $HOME/text.txt && mv $HOME/text.txt $HOME/.gnome2/panel2.d/default/launchers/cvert.desktop
fi
if [ -f $HOME/hosts -a $root == 1 ]; then sudo mv $HOME/hosts /etc/hosts; else echo -e "\033[31mSoubor \"hosts\" se nenachází v domovské složce\033[0m"; fi;
if [ -f $HOME/fstab -a $root == 1 ]; then sudo mv $HOME/fstab /etc/fstab; else echo -e "\033[31mSoubor \"fstab\" se nenachází v domovské složce\033[0m"; fi;
if [ -f $HOME/sources.list -a $root == 1 ]; then rm $HOME/sources.list; fi;
if [ $zaloha != "####" -o $wallpapers != "####" ]; then
############### Nastavení pozadí pracovní plochy - změnit název obrázku + cestu v proměnné $wallpapers ######################
echo
echo -e "\033[32mNastavuji pozadí pracovní plochy ...\033[0m";
gconftool-2 --type string --set /desktop/gnome/background/picture_filename "$HOME/$zaloha/$wallpapers/$path_desktop"
sleep 1s;
if [ $path_skydome != "####" ]; then
############### Nastavení pozadí nebeské báně - změnit název obrázku + cestu v proměnné $wallpapers##########################
echo -e "\033[32mNastavuji pozadí nebeské báně ...\033[0m";
echo
dbus-send --print-reply --type=method_call --dest=org.freedesktop.compiz /org/freedesktop/compiz/cube/screen0/skydome_image org.freedesktop.compiz.set string:"$HOME/$zaloha/$wallpapers/$path_skydome"
sleep 3s;
################################################################################################################################
fi
fi
echo -e "\033[32mPro dokončení synchronizace je nutné restartovat grafické rozhraní ...\033[0m"
echo
if [ $root == 1 ]; then
echo -n "Restartovat grafické rozhraní hned? (y/n) "
read restart
if [ $restart == y ]; then
sudo skill -KILL -u $user
else exit;
fi
fi
elif [ $volba == 3 -a $root == 1 ]; then
sudo apt-get install `cat $HOME/.synch_desktop/$path_default/$path_default.pfl`
else
echo
echo -e "\033[31mZadána neexistující volba, zkuste to znovu ...\033[0m";
sleep 2s;
fi
done
EDIT: SKRIPT JSEM ZMĚNIL (30.6.2011) A JE VYPSÁN V KÓDU V TÉHLE ODPOVĚDI !!
!!!! NESPOUŠTĚT POD ROOTEM !!!!! Při potřebě hesla si vyzve sám ..
-
Vyzerá to pekne, hoc sa v tom moc nevyznám :D Ale snáď aspoň raz si to vyskúšam. K+
-
Dělám ještě lepší verzi, přehlednější a ještě malinko univerzálnější ..není třeba tomu rozumět, jen hodit do souboru a pokud chceš instalovat všechny balíky, které pro default profil používám já, tak spustit :-) Aby to nastavilo i tu tapetu pracovní plochy a pozadí nebeské báně, tak v nastavení proměnných je třeba nastavit cestu a názvy souborů k těmto tapetám (přednastavená cesta je: $HOME/zaloha/Wallpapers). Tzn u sebe na PC si vytvoříš tuto cestu, dáš do ní tapety, v proměnných změníš jen názvy souborů a dáš UPLOAD...tím se vytvoří tvůj profil...pak na druhém PC, případně na novém OS dáš "DOWNLOAD" a stáhne se všechno, co sis uložil..
Jak budu mít vyladěný ten druhý skript, opět ho sem dám..