Portál AbcLinuxu, 26. dubna 2024 16:37


Dotaz: mini skriptik v bashi

2.3.2005 10:28 georgo23 | skóre: 26 | blog: instalace_vmwaru | Karviná
mini skriptik v bashi
Přečteno: 206×
Odpovědět | Admin
Zdravim , mam takovy maly problemek , uz mne nebavilo se na notasu prenastavovat ip adresy brany a tak , kdyz jsem sel nekam k nekomu merit a proto jsem se rozhodl ze si napisi maly a vubec prvni svuj skriptik , ale nejak mi nefunguje a pise mi to pri pusteni ze to nemam nejakym ypusobem dokoncene mohli by jste se mi na to kouknout? diky moc :
#!/bin/sh
iface="eth0 wlan0"
select opt in $iface; do
        if [ "$opt" = "eth0" ]; then
                lokalita="kolek radovky ka6 ka7-8 kacko"
                select lok in $lokalita; do
                        if [ "$lok" ="kolek"]; then
                        ifconfig eth0 down
                        ifconfig eth0 192.168.1.44 up
                        route add default gw 192.168.1.123
                        exit
                        elif [ "$lok" = "radovky" ]; then
                        ifconfig eth0 down
                        ifconfig eth0 192.168.2.44 up
                        route add default gw 192.168.2.2
                        exit
                        elif [ "$lok" = "ka6" ]; then
                        ifconfig eth0 down
                        ifconfig eth0 192.168.3.44 up
                        route add default gw 192.168.3.1
                        exit
                        elif [ "$lok" = "ka7-8" ]; then
                        ifconfig eth0 down
                        ifconfig eth0 192.168.101.44 up
                        route add default gw 192.168.101.1
                        exit
                        elif [ "$lok" = "kacko" ]; then
                        ifconfig eth0 down
                        ifconfig eth0 192.168.0.2 up
                        route add default gw 192.168.0.1
                        exit
        elif [ "$opt" = "wlan0" ]; then
                lokalita="kolek radovky ka6 ka7-8 "
 select lok in $lokalita; do
                        if [ "$lok" ="kolek"]; then
                        ifconfig wlan0 down
                        ifconfig wlan0 192.168.1.44 up
                        route add default gw 192.168.1.123
                        iwconfig wlan0 essid vejvar mode managed enc xxxxxxxxxxxxxxxxxxxx
                        exit
                        elif [ "$lok" = "radovky" ]; then
                        ifconfig wlan0 down
                        ifconfig wlan0 192.168.2.44 up
                        route add default gw 192.168.2.2
                        iwconfig wlan0 essid vejvar1 mode managed enc xxxxxxxxxxxxxxxxxxxx
                        exit
                        elif [ "$lok" = "ka6" ]; then
                        ifconfig wlan0 down
                        ifconfig wlan0 192.168.3.44 up
                        route add default gw 192.168.3.1 mode managed
                        iwconfig wlan0 essid studentka6
                        exit
                        elif [ "$lok" = "ka7-8" ]; then
                        ifconfig wlan0 down
                        ifconfig wlan0 192.168.101.44 up
                        route add default gw 192.168.101.1
                        iwconfig wlan0 essid studentska7-8 mode managed
                        exit
        else
        clear
        echo spatna volba
        fi
   done


jen se učím jak se to naučit .... ...
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.3.2005 11:12 zet | skóre: 12
Rozbalit Rozbalit vše Re: mini skriptik v bashi
Odpovědět | | Sbalit | Link | Blokovat | Admin
1) mel byste doplnit vystup (co to hazi za chyby)

2) nelibi se mi napr. toto: if [ "$lok" ="kolek"]; then podle me by mela byt mezera minimalne za "kolek", takze: if [ "$lok" = "kolek" ]; then (tento ukaz je tam vickrat)
2.3.2005 11:24 georgo23 | skóre: 26 | blog: instalace_vmwaru | Karviná
Rozbalit Rozbalit vše Re: mini skriptik v bashi
opraveno ale chyba pretrvava a pise to presne toto: syntax error: unexpected end of file
jen se učím jak se to naučit .... ...
2.3.2005 11:55 Bubak
Rozbalit Rozbalit vše Re: mini skriptik v bashi
Mezera musi byt i za rovnitkem (tedy pred i za nim:-). Jinak takhle zbezne jsem tam nikde nezahledl ukonceni vlozenych ifu. To by byl dostatecny duvod pro tuhle hlasku:-)
2.3.2005 12:06 georgo23 | skóre: 26 | blog: instalace_vmwaru | Karviná
Rozbalit Rozbalit vše Re: mini skriptik v bashi
trochu mne prosim nakopni ,, jak rikam zacal jsem se o to zajimat dnes a v LDP toho zas tak hodne napsano neni jak ukonci ?? else fi ??
jen se učím jak se to naučit .... ...
2.3.2005 12:18 Antonín Kolísek | skóre: 33 | blog: PDA | Vyškov
Rozbalit Rozbalit vše Re: mini skriptik v bashi
Mám pocti, že máš ukončený je jeden z těch select opt in ... ; do. Chce to přidat ještě jeden done.
2.3.2005 12:31 Bubak
Rozbalit Rozbalit vše Re: mini skriptik v bashi
S tim done je to taky pravda, to jsem prehledl:-)
Asi by to melo vypadat takhle:

                        ifconfig eth0 192.168.0.2 up
                        route add default gw 192.168.0.1
                        exit
>                       fi
>                       done
        elif [ "$opt" = "wlan0" ]; then
                lokalita="kolek radovky ka6 ka7-8 "

a jeste tady:

                        route add default gw 192.168.101.1
                        iwconfig wlan0 essid studentska7-8 mode managed
                        exit
>                       fi
>                       done
        else
        clear

Snad to najdes:-)

Jinak je to v man bash, pripadne v man test, co se tyce podminek.
2.3.2005 12:21 Marián Kyral
Rozbalit Rozbalit vše Re: mini skriptik v bashi
Kazdy IF musi mit konec. Tedy
IF neco
  IF neco
    neco
  ELIF neco
    neco
  FI
ELIF neco
 neco
FI
2.3.2005 12:30 georgo23 | skóre: 26 | blog: instalace_vmwaru | Karviná
Rozbalit Rozbalit vše Re: mini skriptik v bashi
:d , ted uz to tak mam a prozmenu mi pise :
./eth0.1: line 35: syntax error near unexpected token `elif'
./eth0.1: line 35: `    elif [ "$opt" = "wlan0" ]; then '


Hmmm , nevim hledam na netu nejaky rychlokurs ci knihu o programovani v bashi a nic za kaydou radu budu moc vdecen diky
jen se učím jak se to naučit .... ...
2.3.2005 12:35 Bubak
Rozbalit Rozbalit vše Re: mini skriptik v bashi
Muzes sem pastnout stavajici tvar? :-)
2.3.2005 12:35 Antonín Kolísek | skóre: 33 | blog: PDA | Vyškov
Rozbalit Rozbalit vše Re: mini skriptik v bashi
Něco je tady,ale staršího data: http://linuxx.hyperlinx.cz/praxe4.html. Jinak zde na ABClinuxu vyšel seriál o programování v BASHi
2.3.2005 12:32 Semo
Rozbalit Rozbalit vše Re: mini skriptik v bashi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Chyba ti tam 2x "fi" oba vysoke ify su neukoncene

spusti to ako
sh -xv ./script
uvidis co to robi
2.3.2005 12:42 georgo23 | skóre: 26 | blog: instalace_vmwaru | Karviná
Rozbalit Rozbalit vše Re: mini skriptik v bashi
super dekuji vsem , stacilo pouze doplnit fi a done . jestli to nekoho zajima tak zde je funkcni skript , ale myslil ze je na tolik primitvni by ho zvladnul kazdy z Vas ,, jeste jednou moc dekuji :
#!/bin/bash
#
#
iface="kabel wifi"
lokalita="kolek radovky ka6 ka7-8 kacko"
select opt in $iface; do
        if [ "$opt" = "kabel" ]; then
                select lok in $lokalita; do
                        if [ "$lok" = "kolek"]; then
                        ifconfig eth0 down
                        ifconfig eth0 192.168.1.44 up
                        route add default gw 192.168.1.123
                        exit
                        elif [ "$lok" = "radovky" ]; then
                        ifconfig eth0 down
                        ifconfig eth0 192.168.2.44 up
                        route add default gw 192.168.2.2
                        exit
                        elif [ "$lok" = "ka6" ]; then
                        ifconfig eth0 down
                        ifconfig eth0 192.168.3.44 up
                        route add default gw 192.168.3.1
                        exit
                        elif [ "$lok" = "ka7-8" ]; then
                        ifconfig eth0 down
                        ifconfig eth0 192.168.101.44 up
                        route add default gw 192.168.101.1
                        exit
                        elif [ "$lok" = "kacko" ]; then
                        ifconfig eth0 down
                        ifconfig eth0 192.168.0.2 up
                        route add default gw 192.168.0.1
                        exit
                        fi
                       done
        elif [ "$opt" = "wifi" ]; then
                select lok in $lokalita; do
                        if [ "$lok" = "kolek"]; then
                        ifconfig wlan0 down
                        ifconfig wlan0 192.168.1.44 up
                        route add default gw 192.168.1.123
                        iwconfig wlan0 essid vejvar mode managed enc xxxxxxxxxxxxxxxxxxxxxxx
                        exit
                        elif [ "$lok" = "radovky" ]; then
                        ifconfig wlan0 down
                        ifconfig wlan0 192.168.2.44 up
                        route add default gw 192.168.2.2
                        iwconfig wlan0 essid vejvar1 mode managed enc xxxxxxxxxxxxxxxxxxxxxxxx
                        exit
                        elif [ "$lok" = "ka6" ]; then
                        ifconfig wlan0 down
                        ifconfig wlan0 192.168.3.44 up
                        route add default gw 192.168.3.1 mode managed
                        iwconfig wlan0 essid studentka6
                        exit
                        elif [ "$lok" = "ka7-8" ]; then
                        ifconfig wlan0 down
                        ifconfig wlan0 192.168.101.44 up
                        route add default gw 192.168.101.1
                        iwconfig wlan0 essid studentska7-8 mode managed
                        exit
                        fi
                        done
fi
done
jen se učím jak se to naučit .... ...
2.3.2005 13:11 Smazáno | skóre: 21 | blog: tezkorict
Rozbalit Rozbalit vše Re: mini skriptik v bashi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Snad jen bych doporučil místo if použít statement case. Docela se to potom zpřehlední...
2.3.2005 15:57 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: mini skriptik v bashi
Jestli mate jeste nekdo zajem o ten tutorial programovani v Bashi tak tady je docela dobrej http://docs.linux.cz/programming/interpreted/bashdoc-1.4/
3.3.2005 10:09 georgo23 | skóre: 26 | blog: instalace_vmwaru | Karviná
Rozbalit Rozbalit vše Re: mini skriptik v bashi
dekuji , urcite to prostuduji
jen se učím jak se to naučit .... ...
3.3.2005 10:27 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše Re: mini skriptik v bashi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zdravim

Tohle bych resil pomoci extra skriptu. Proste co skript to jedna sitova konfigurace. Pojmenuj je treba "connect_ap1", "connect_ap2" atd. Jestli to chces obalit nejakym skriptem (i kdyz uz me nenapada proc) tak bych pouzil CASE.

Ja osobne docela rad pouzivam toto:

http://tiger.la.asu.edu/bash_tutorial.htm

Jak se rika, v jednoduchosti je sila.

Zdenek
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
3.3.2005 11:18 georgo23 | skóre: 26 | blog: instalace_vmwaru | Karviná
Rozbalit Rozbalit vše Re: mini skriptik v bashi
no mne se na tom libi to , ze si prikaz dam do aliasu a potom kdekoliv v konzoli pomoci výběru ; v podstate zmacknu 2x z volby ; a mam kompletne nastavenej interface i z gw , ale hlavne jsem se konecne chtel dokopat k necemu co napisi si sam a bude to fungovat .
jen se učím jak se to naučit .... ...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.