Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: poinstalační skript (bash)  (Přečteno 4551 krát)

Bosf

  • Aktivní člen
  • *
  • Příspěvků: 475
  • [ZDE SI PŘEDSTAVTE AVATAR]
poinstalační skript (bash)
« kdy: 08 Února 2009, 21:25:26 »
Chtěl jsem udělat něco jako poinstalační skript,ale nějak se mi to nevyvedlo.Vím že to je odporný kód,najdete hodně chyb,ale jsem začátečník :)

#!/bin/bash
echo "Napište číslo příkazu které chcete vykonat."
echo "1=Zobrazení ikony domovské složky na ploše ; 2=dalsi volba ; 3=Nainstalovat balík nesvobodného softwaru"
read volba
while true | do
if [ "$volba" = "1" ]; then
gconftool-2 -t bool --set /apps/nautilus/desktop/home_icon_visible 1
fi
if [ "$volba" = "2" ]; then
echo " dalsi volba"
fi
if [ "$volba" = "3" ]; then
wget -q http://packages.medibuntu.org/medibuntu-key.gpg -O- | sudo apt-key add -
sudo wget http://www.medibuntu.org/sources.list.d/intrepid.list -O /etc/apt/sources.list.d/medibuntu.list
sudo apt-get update
sudo apt-get install ubuntu-restricted-extras libdvdcss2 non-free-codecs
fi

done


cilem bylo vytvorit skript kde napisu cislo veci co chci udelat,a ono to ten prikaz vykona.to while true do je tam proto,aby se to nevyplo po prvnim prikazu,ale aby se me to porad ptalo co chci udelat dokud to nevypnu.bohuzel skript se vypne at napisu co napisu.Jak by to melo byt spravne?
windowsácke aplikácie z overených repozitárov?

romciiik

  • Stálý člen
  • **
  • Příspěvků: 532
    • romiix.org
Re: poinstalační skript (bash)
« Odpověď #1 kdy: 08 Února 2009, 21:36:31 »
ak som to správne pochopil, chceš niečo ako http://port.greenie.sk/
skús sa inšpirovať/použiť

Vojtěch Trefný

  • Příspěvků: 9307
  • Don Quijote
Re: poinstalační skript (bash)
« Odpověď #2 kdy: 08 Února 2009, 21:53:11 »
Bože!

http://docs.linux.cz/programming/interpreted/bashdoc-1.4/

Celý si to přečti a pak ještě jednou s důrazem na slovíčko case.

Btw. na co vlastně něco takového potřebuješ? Přijde mi to docela (hodně) jako zbytečnost...
« Poslední změna: 08 Února 2009, 21:55:27 od Vojtěch Trefný »

Jakub Lucký

  • Závislák
  • ***
  • Příspěvků: 3433
    • Jakub Lucký
Re: poinstalační skript (bash)
« Odpověď #3 kdy: 08 Února 2009, 22:09:43 »
Mám-li být plně upřímný, vykašlete se na něco takového. Pokud nejste opravdový unixový guru, tak svým skriptem naděláte víc škody než užitku, protože každý skript pro méně schopné uživatele musí být totálně blbuvzdorný a polopatický, aby byl obecně využitelný.

Pokud chcete mít skript, který budete spouštět na nově nainstalovaných Ubuntu vy, nepište si tam žádné podobné konfigurační nesmysly, ale prostě to rozdělte do několika skriptů.

Ještě to shrnu:
* Pokud tento skript píšete pro sebe, budiž, jen to nedělejte zbytečně složité...
* Pokud tento skript píšete pro někoho jiného, tak to nedělejte vůbec, protože to nebude mít ten efekt, který chcete...

Toto říkám jako poměrně zkušený uživatel, admin i migrátor několika lidí na Linux...
FAQ-Často kladené otázky   Návody(wiki)     
Jakub@Life:~$ Ubuntu změnilo váš život, přejete si změny uložit?(Y/N)?
Děkujeme, že nekrmíte trolly Blogísek  :wq

arrange

  • Závislák
  • ***
  • Příspěvků: 4031
  • "jdu s hlavou vztyčenou..."
Re: poinstalační skript (bash)
« Odpověď #4 kdy: 08 Února 2009, 22:27:35 »
Nefunguje Ti to pravděpodobně proto, že po while true by měl být středník, ne roura (|).

case je taky fajn příkaz...

Hodně štěstí v dalším experimentování.
http://www.openstreetmap.org - mapy celého světa "wiki style"

Bosf

  • Aktivní člen
  • *
  • Příspěvků: 475
  • [ZDE SI PŘEDSTAVTE AVATAR]
Re: poinstalační skript (bash)
« Odpověď #5 kdy: 09 Února 2009, 09:09:11 »
Mám-li být plně upřímný, vykašlete se na něco takového. Pokud nejste opravdový unixový guru, tak svým skriptem naděláte víc škody než užitku, protože každý skript pro méně schopné uživatele musí být totálně blbuvzdorný a polopatický, aby byl obecně využitelný.

Pokud chcete mít skript, který budete spouštět na nově nainstalovaných Ubuntu vy, nepište si tam žádné podobné konfigurační nesmysly, ale prostě to rozdělte do několika skriptů.

Ještě to shrnu:
* Pokud tento skript píšete pro sebe, budiž, jen to nedělejte zbytečně složité...
* Pokud tento skript píšete pro někoho jiného, tak to nedělejte vůbec, protože to nebude mít ten efekt, který chcete...

Toto říkám jako poměrně zkušený uživatel, admin i migrátor několika lidí na Linux...
delam to napul pro sebe a napul pro nekoho jineho,kdyz instaluju ubuntu na ostatni pocitace,je jednodussi to udelat takhle,hlavne na pocitacich bez internetu
spis to delam abych se procvicil,jestli mi to bude fungovat :)
windowsácke aplikácie z overených repozitárov?

nettezzaumana

  • Host
Re: poinstalační skript (bash)
« Odpověď #6 kdy: 09 Února 2009, 10:02:19 »
!man bash

Jakub Lucký

  • Závislák
  • ***
  • Příspěvků: 3433
    • Jakub Lucký
Re: poinstalační skript (bash)
« Odpověď #7 kdy: 09 Února 2009, 19:51:51 »
delam to napul pro sebe a napul pro nekoho jineho,kdyz instaluju ubuntu na ostatni pocitace,je jednodussi to udelat takhle,hlavne na pocitacich bez internetu
spis to delam abych se procvicil,jestli mi to bude fungovat :)
Tak, to je dobrý začátek, že to nechceš moc šířit...

pár základních rad:
1) Vykašli se na ty konfigurační nesmysly alá menu (to je to, co máš označeno jako volba) a rozděl to tématicky do několika skriptů: např: média, server, nastavení

2) projdi si konstrukce jazyka bash (anglicky tady: http://tldp.org/LDP/abs/html/ a česky třeba tady: http://docs.linux.cz/programming/interpreted/bashdoc-1.4/ nebo na abclinuxu kdysi byl pěkný seriál), věnuj hluboké čtení funkcím, návratovým hodnotám, případně pak dostuduj Perl/Awk/Sed

3) Nauč se odsazovat

4) Měj na paměti, že skriptama se nedá spasit svět/Linux/BFU, ale zase lehce neustupuj, když dojde na složitější skriptění...

5) Informuj průběžně uživatele, co skript dělá...
FAQ-Často kladené otázky   Návody(wiki)     
Jakub@Life:~$ Ubuntu změnilo váš život, přejete si změny uložit?(Y/N)?
Děkujeme, že nekrmíte trolly Blogísek  :wq

Bosf

  • Aktivní člen
  • *
  • Příspěvků: 475
  • [ZDE SI PŘEDSTAVTE AVATAR]
Re: poinstalační skript (bash)
« Odpověď #8 kdy: 17 Února 2009, 16:03:32 »
tak po nějaké době jsem vyplodil tohle:


Kód: [Vybrat]
#!/bin/bash
moznosti="
-------------------------------------------------------
 1 = Zobrazení ikony domovské složky na ploše
 2 = Vytvořit složku s ukázkovými skripty
 3 = Nainstalovat balík pro přehrávání nesvobodných formátů
 4 = Otevření Sledování systému po stisku Ctrl+Alt+Del
 5 = Aktivace NumLock na přihlašovací obrazovce
 6 = Načtení Internetové stránky poinstalačního průvodce
 0=Vypnutí Skriptu
--------------------------------------------------------"






echo "Napište číslo příkazu které chcete vykonat."
echo "$moznosti"
while true; do
read volba
case "$volba" in
                1 )
gconftool-2 -t bool --set /apps/nautilus/desktop/home_icon_visible 1
    echo "Chcete vytvořit ikonu domovského adresáře?"
    echo "Napište:
1 = Stáhnutí z intenetového úložiště (aktuálnější)
2 = Vytvoření skriptem [Zatím nefunkční]
0 = Nevytvořit."
read home
case "$home" in
                1)
wget rocket.borec.cz/home.gif
;;
                *,0 )
    echo "Ikona nebyla vytvořena."
 esac

;;
                2 )

for bin in bin; do
  if [ -d "$bin" ]; then
cd bin
else
mkdir bin
cd bin
fi

for skripty in Skripty.sh; do
  if [ -d "$skripty" ]; then

./Skripty.sh
else
echo "Soubor Skripty.sh neexistuje.Chcete ho stáhnout?Odpovídejte ANO nebo NE."
read skr

case "$skr" in
             
            [Aa]* )

echo "Stahuji soubor Skripty.sh"
wget rocket.borec.cz/Skripty.sh
echo "Spouštím..."
./Skripty.sh
            [Nn]* )
echo "Soubor nebyl stažen."
esac

fi

;;
                3 )
./NesvobodneFormaty.sh
;;
                4 )
gconftool-2 -t str --set /apps/gnome_settings_daemon/keybindings/power ""
gconftool-2 -t str --set /apps/metacity/global_keybindings/run_command_9 "<Control><Alt>Delete"
gconftool-2 -t str --set /apps/metacity/keybinding_commands/command_9 "gnome-system-monitor"
;;
                5 )
echo "
 Pokud chcete, aby se automaticky zapnul NumLock již na přihlašovací obrazovce Ubuntu, spusťte v Terminálu tyto příkazy:


sudo apt-get install numlockx
gksudo gedit /etc/gdm/Init/Default


Najděte řádek obsahující


exit 0


a nad tento řádek přidejte následující text:


if [ -x /usr/bin/numlockx ]; then
 /usr/bin/numlockx on

fi

Soubor uložte. Při příštím restartu by měl být NumLock aktivován. "
echo "Vykonat příkazy?Odpovězte Ano nebo Ne"
read numlock
case "$numlock" in
             [Aa]* )
sudo apt-get install numlockx
gksudo gedit /etc/gdm/Init/Default
;;
             [Nn]* )
echo "Příkazy nebyly vykonány"
;;
                 * )
echo "Promiňte ale nerozuměl jsem.Příkaz nebyl vykonán."
;;
esac


;;
                6 )
firefox "http://wiki.ubuntu.cz/Pr%C5%AFvodce%20po%20instalaci"
;;
               test )
;;
                0 )
exit 1
;;


                * )
    echo "Neznámá odpověď.Odpovídejte prosím čísly:"
esac


echo "
Napište číslo příkazu které chcete vykonat."
echo "$moznosti"


done

read end





a když to spustím tak mi to hází syntax error v [Nn]* )
ok tak jsem celý řádek s rozbalováním skriptů odstranil.
syntax error in - ;; unexpected token

ať se koukám jak se koukám,chybu nevidím a pořád mi to hází syntax error.
« Poslední změna: 17 Února 2009, 16:32:38 od Bosf »
windowsácke aplikácie z overených repozitárov?

nettezzaumana

  • Host
Re: poinstalační skript (bash)
« Odpověď #9 kdy: 17 Února 2009, 16:06:26 »
omg .. no to je hruza !!! http://en.wikipedia.org/wiki/Spaghetti_code ..

cd kdybys alespon pouzil nejakej tag aka
Citace
a nebo
Kód: [Vybrat]
??

Bosf

  • Aktivní člen
  • *
  • Příspěvků: 475
  • [ZDE SI PŘEDSTAVTE AVATAR]
Re: poinstalační skript (bash)
« Odpověď #10 kdy: 17 Února 2009, 16:14:47 »
vim ze je to odporny kod,ale zatim je to to nejlepsi co dokazu napsat.
windowsácke aplikácie z overených repozitárov?

nettezzaumana

  • Host
Re: poinstalační skript (bash)
« Odpověď #11 kdy: 17 Února 2009, 16:21:54 »
!tag quote a nebo code

Yontalcar

  • Stálý člen
  • **
  • Příspěvků: 833
  • Semper fidelis
Re: poinstalační skript (bash)
« Odpověď #12 kdy: 17 Února 2009, 16:52:03 »
vim ze je to odporny kod,ale zatim je to to nejlepsi co dokazu napsat.
tys asi ntz nepochopil - stačí když budeš používat odsazení - takhle se v tom ani prase nevyzná

edit: A nějaké komentáře by taky neškodily
« Poslední změna: 17 Února 2009, 16:56:41 od Yontalcar »
NB: ASUS X53U - AMD Brazos E450; Debian GNU/Linux Sid amd64 (KDE 4.14)
Jen dvě věci jsou nekonečné - vesmír a lidská hloupost. Tím prvním si ovšem nejsem tak jist. - Albert Einstein

Bosf

  • Aktivní člen
  • *
  • Příspěvků: 475
  • [ZDE SI PŘEDSTAVTE AVATAR]
Re: poinstalační skript (bash)
« Odpověď #13 kdy: 17 Února 2009, 21:44:46 »
ahá...no,důvod syntax errorů jsem nezjistil,tak jsem příslušnou část přepsal celou a hle,už to funguje!Taky nechápu proč to mám rozházené,a proč to udělá několikrát stejnou složku v samo sobě,takže vypadá že se kód celkově bude ještě měnit :) potom řeknu jak dopadlo a dám kód.
windowsácke aplikácie z overených repozitárov?

Jakub Lucký

  • Závislák
  • ***
  • Příspěvků: 3433
    • Jakub Lucký
Re: poinstalační skript (bash)
« Odpověď #14 kdy: 22 Února 2009, 15:28:12 »
http://lug.fh-swf.de/vim/vim-bash/StyleGuideShell.en.pdf
Tohle přečíst, bez toho se dál nehnout (Věnujte velkou důslednost oboru: Odsazení)

Dál: rozdělit věci do skriptů

Dál: Stahování věcí z netu je blbost, dodávejte to raději jako jeden archiv

Dál: Mícháte hrušky s jablkama, rozdělte to na skript, kde jsou potřeba rootovské práva a kde naopak ne

Dál: informujte důkladněji uživatele o tom, co se děje

Dál:
Kód: [Vybrat]
for bin in bin; do
  if [ -d "$bin" ]; then
cd bin
else
mkdir bin
cd bin
fi
Tenhle kód by mohl vyhrát obscurity code contest
1) Nepojmenovávejte proměnné jako adresáře
2) man mkdir, hledejte parametr -p

Dál:
Kód: [Vybrat]
for skripty in Skripty.sh
1) man test, to vám docela usnadní život a asi 120 řádků kódu

Kód: [Vybrat]
firefox "http://wiki.ubuntu.cz/Pr%C5%AFvodce%20po%20instalaci"nepoužívejte příkaz firefox, někdo ho mít nemusí, od použití browseru je to Debianí věc jménem: sensible-browser

Kód: [Vybrat]
read endProč takto?, nestačí
Kód: [Vybrat]
echo "Konec skriptu"
FAQ-Často kladené otázky   Návody(wiki)     
Jakub@Life:~$ Ubuntu změnilo váš život, přejete si změny uložit?(Y/N)?
Děkujeme, že nekrmíte trolly Blogísek  :wq

Bosf

  • Aktivní člen
  • *
  • Příspěvků: 475
  • [ZDE SI PŘEDSTAVTE AVATAR]
Re: poinstalační skript (bash)
« Odpověď #15 kdy: 23 Února 2009, 08:03:00 »
ok,děkuji za pomoc ale s posledním nesouhlasím.
read end
je tam od toho aby to uživatel "odmáčkl" enterem ukončení skriptu,kdyby tam bylo jen echo,tak to sice napíše ale hned se ukončí,takže potom možná ještě sleep.Každopádně nevím co to tam dělá když se to stejně ukončuje tak že řeknete exit.A jinak děkuji.
windowsácke aplikácie z overených repozitárov?

Jakub Lucký

  • Závislák
  • ***
  • Příspěvků: 3433
    • Jakub Lucký
Re: poinstalační skript (bash)
« Odpověď #16 kdy: 25 Února 2009, 13:57:55 »
ok,děkuji za pomoc ale s posledním nesouhlasím.
read end
je tam od toho aby to uživatel "odmáčkl" enterem ukončení skriptu,kdyby tam bylo jen echo,tak to sice napíše ale hned se ukončí,takže potom možná ještě sleep.Každopádně nevím co to tam dělá když se to stejně ukončuje tak že řeknete exit.A jinak děkuji.

To je pro uživatele ale matoucí. Slušný skript se chová tak, že se prostě vypne a nečeká na potvrzení...
FAQ-Často kladené otázky   Návody(wiki)     
Jakub@Life:~$ Ubuntu změnilo váš život, přejete si změny uložit?(Y/N)?
Děkujeme, že nekrmíte trolly Blogísek  :wq

 

Provoz zaštiťuje spolek OpenAlt.