mam pare pytan zwiazanych z bashem a z ABS nie znalazlem jeszcze odpowiednich przykladow
1. Umiem zrobic aby skrypt pytal mnie (y/n) i w zaleznosci od danej odpowiedzi robil to co jest dalej zdefiniowane
ale nie wiem zabardzo jak zrobic zeby skrypt przy podawaniu sciezki odrzucal jej niepoprawny wpis czyli:
przepuszczal taka skladnie /jakas/lokalizacja/ a odrzucal taka /jakas/lokalizacja
czyli ogolnie chodzi mi zeby sprawdzal czy jest / na koncu linii:
Kod: Zaznacz cały
Podaj sciezke docelowa: /jakas/sciezka
Zla sciezka!!
Podaj sciezke docelowa: /jakas/sciezka/
bash potraktuje drugi wpis(czyli lokalizacja) jako nazwe pliku, a nie taki ma byc zamiar tego skryptu
w sumie to chyba prostszym?! zadaniem by bylo automatycznie dopisac na koncu / w przypadku jego braku, czy sie myle?
i przy okazji sprawdzal jej poprawnosc tzn. nie dopuszczal podania nieistniejacej lokalizacji
2. Chcialbym zrobic aby skrypt interpretowal parametry w sposob w jaki robia to programy czyli:
Kod: Zaznacz cały
./skrypt --dest=/jakas/lokalizacja/
Kod: Zaznacz cały
cp $TMP/nazwa_pliku $DEST
Kod: Zaznacz cały
DEST=
HOME=
TMP=
if [ $# -eq 0 ] ; then
echo "Podaj argumenty"
else
$DEST=$1
$HOME=$2
$TMP=$3
fi
Kod: Zaznacz cały
if [ $1 (yy no wlasnie i co tu dac? -eq dla liczb = i != dla ciagu znakow) 0? ]
mi raczej chodzi o podawanie parametrow z okresleniem ich tzn.:
Kod: Zaznacz cały
./skrypt --dest= --home= --tmp=
oczywiscie jezeli sie da to wiem ze prosciej moge jak opisalem wyzej czyli okreslic dla katalogu jakie moze przyjmowac wartosci
i nastepnie w wyniku podania choc jednej niepoprawnej wyswietlal cala poprawna skladnie skryptu z parametrami np.:
Kod: Zaznacz cały
./skrypt $TMP $HOME $DEST
3. Skrypt najpierw wykonuje polecenia dla usera jezeli on zgodzi sie w pytaniu: "czy chcesz wykonac polecenie bleble (y/n): "
nastepnie niezaleznie od tego czy wykona te poelcenia user, czy nie wykona, przechodzi w wykonywanie polecen przez roota
root tutaj ma kluczowego znaczenie poniewaz niektore polecenia nie moga byc wykonywane przez zwyklych userow
a wiec tak to uczynilem(nie dziala zreszta):
Kod: Zaznacz cały
if [ `id -un` = root ] ; then
echo "Wykonuje polecenia roota"
/polecenie/roota
else
echo "NIe masz uprawnien roota, ktore sa potrzebne, czy przelogowac? (y/n): "
read pytanie
if [ $pytanie = n ] ; then
echo "Nie zgodziles sie na przelogowanie, Wychodze!"
exit # moge tutaj uzyc polecenia exit? przy break wywalilo "break: only meaningful in a `for', `while', or `until' loop" czyli cos zle
fi
if [ $pytanie != y ] ; then
echo 'Prosze podac "y" albo "n"'
fi
if [ $pytanie = y ] ; then
su
fi
fi
gdy wpisze exit(czyli wychodze z konta roota na konto na ktorym wykonywalme skrypt) to wszystko po su zostaje wykonane
czyli tak jakby nbash ustala sobie ze wszystkie komendy ida na usera a su jest wykonywane i nic nie robi na koncie roota
da sie to jakos sensownie zlepic aby po zalogowaniu na konto roota wykonywale dalsze polecenia ?
wiec juz wiadomo ze chodzi mi o to aby w jakis sposob podzielic skrypt na dwie czesci:
pierwsza dla usera, druga dla roota i gdzies pomiedzy nimi sprawdzanie ID po nazwie
(zalozylem ze skrypt bedzie mogl uruchamic zwykly user lub root)
4. Czy istnieje mozliwosc wyciecia znakow oddzielonych znakiem ","(przecinek), co na takie zasadzie jak w przypadku useradd
kiedy to podajemy grupy do ktorych ma nalezec user, oddzielajac je przecinkeim czyli ciagn znakow:
/plik,plik2,plik3,plik4 sa podstawiane pod kolejno $D1 $D2 $D3 $D4 aha ciagn znakow plik,plik2...
wpisujemy po otrzymaniu echo "Wpisz poprawne nazwy plikow": wpisujemy plik,plik2... [enter] a on nam ladnie
to podstawia pod $D1 $D2 itp..
no... to tyle z mojego meczenia, i tyle zdazylem nauczyc sie przez noc( tyle studiowalem ABS, ksiazke pt. Po Prostu RedHat 7.2" Wydawnicto Helion, wypociny Dozziego i man roznych polecen)
jakby ktos byl w stanie udzielic mi odpowiedzi na powyzsze jakze dreczace mnnie pytania
Dziekuje
PS. szkoda ze
Kod: Zaznacz cały
nie formatuje tak jak np. mcedit, wtedy wszystko byloby klarownie widac w skrypcie :)