#!/bin/bash # sciezka do pliku konfiguracyjnego... confdir="/etc/samba/smb.conf" #funkcje function newconfig { echo -n `clear` while true do if [ -e $confdir ]; then echo "Plik istnieje! Dalsze wprowadzanie zmian skasuje go i stworzy od nowa!" echo -n "Nadpisac go? T/N: " read coverr coverr=`echo $coverr | tr a-z A-Z` case $coverr in "T") `rm $confdir`; newconfig2; break ;; "N") echo "plik nie zostal nadpisany!"; break ;; esac else newconfig2 break fi done } function newconfig2 { echo -n "Nazwa grupy roboczej: " read cworkgroup cworkgroup=`echo $cworkgroup | tr a-z A-Z` echo -n "Opis serwera (widoczny w sieci): " read cservstring while true do echo -n "Uaktywnic konto goscia? T/N: " read cguest cguest=`echo $cguest | tr a-z A-Z | tr -d [:cntrl:]` case $cguest in "T") cguest2="guest account\t\t= nobody"; break ;; "N") cguest2="#guest account\t\t= nobody"; break ;; esac done #zapisywanie do pliku; echo -e "[global] \tworkgroup\t\t= $cworkgroup \tserver string\t\t= $cservstring \tsecurity\t\t= share \t$cguest2 \tencrypt passwords\t= yes \tlog file\t\t= /var/log/samba/log.%m \tlog level\t\t= 0 \tmax log size\t\t= 2000 \twins support\t\t= no \tdisplay charset\t\t= iso8859-2 " > $confdir } function removeshare { max=`grep "\[" $confdir | sed '1,1d' | tr -d [] | wc -l` if ( [ -e $confdir ] && [ $max -ne 0 ] ); then echo -n `clear` sharelist while true do echo -n "Ktory udzial usunac (0 - wyjscie): " read ktory if [ $ktory -eq 0 ]; then break elif ([ $ktory -gt 0 ] && [ $ktory -le $max ]); then wybrany=`grep "\[" $confdir | grep -v global | grep -v "#END" | head -$ktory | tail -1 ` wybrany=`echo -n -e $wybrany | tr -d [:cntrl:]` startln=`grep -n "\[" $confdir | grep -v global | grep -v "#END" | head -$ktory | tail -1 | cut -d ':' -f1` let endln=$((startln+8)) zakres="$startln,$endln" sed -i "$zakres"'d' $confdir fi done else echo "Nie istnieje plik konfiguracyjny lub nie masz udostepnionych katalogow!" echo "Stworz go najpierw!" fi } function addshare { if [ -e $confdir ]; then echo -n `clear` while true do echo -n "Podaj nazwe udzialu, pod ktora bedze widoczny w sieci: " read sname if [[ sname!="" ]]; then break else echo "Nazwa nie moze byc pusta!" fi done while true do echo -n "Podaj sciezke do udostepnianego udzialu: " read spath if [[ spath!="" ]]; then break else echo "Podaj sciezke!" fi done echo -n "Opis udzialu: " read sopis while true do echo -n "Udzial ma byc publiczny? T/N: " read spublic spublic=`echo $spublic | tr a-z A-Z` case $spublic in "T") spublic="yes"; break ;; "N") spublic="no"; break ;; esac done while true do echo -n "Zezwolic na przegladanie udzialu? T/N: " read sbrowser sbrowser=`echo $sbrowser | tr a-z A-Z` case $sbrowser in "T") sbrowser="yes"; break ;; "N") sbrowser="no"; break ;; esac done while true do echo -n "Zezwolic na zapisywanie w udziale? T/N: " read swrite swrite=`echo $swrite | tr a-z A-Z` case $swrite in "T") swrite="yes"; break ;; "N") swrite="no"; break ;; esac done while true do echo -n "Udzial dostepny dla gosci? T/N: " read sguest sguest=`echo $sguest | tr a-z A-Z` case $sguest in "T") sguest="yes"; break ;; "N") sguest="no"; break ;; esac done #zapisywanie do pliku; echo -e "[$sname] \tpath\t\t= $spath \tcomment\t\t= $sopis \tpublic\t\t= $spublic \tbrowseable\t= $sbrowser \twritable\t= $swrite \tguest ok\t= $sguest #END[$sname] " >> $confdir else echo "Nie istnieje plik konfiguracyjny smb.conf! Stworz go najpierw!" fi } function sharelist { if [ -e $confdir ]; then echo "Udostepnione zasoby:" echo "=================================================================" echo -e "| L.p\r\t| nazwa udzialu |\t\tkatalog\t\t|" echo -e "=================================================================" max=`grep "\[" $confdir | grep -v global | grep -v "#END" | tr -d [] | wc -l` l=1 while [ $l -le $max ] do share=`grep "\[" $confdir | grep -v global | grep -v "#END" | sed 's/\[/| /' | tr -d ] | head -$l | tail -1` share2=`echo -n -e $share | tr -d [:cntrl:]` path=`grep path $confdir | awk '{print $3}' | head -$l | tail -1` echo -e "| $l.\r\t$share2\r\t\t\t\t| $path\r\t\t\t\t\t\t\t\t|" l=$[l+1] done echo "=================================================================" else echo "Nie istnieje plik konfiguracyjny smb.conf! Stworz go najpierw!" fi } function wait4enter { echo "Nacisnij [enter] aby wrocic do menu" read anykey } function drawmenu { while true do echo -n `clear` echo -e " smb.conf 4 lazybones - konfigurator serwera SAMBA" echo -e "\t\tby gryg 2k8" echo "" echo -e "1. Utworz nowa konfiguracje" echo -e "2. Wyswietl udostepnione zasoby" echo -e "3. Dodaj udzial" echo -e "4. Usun udzial" echo -e "5. Wyjscie" echo "" read -p ": " wybor case $wybor in "1") newconfig ;; "2") sharelist; wait4enter ;; "3") addshare; wait4enter;; "4") removeshare; wait4enter ;; "5") break ;; esac done } if [ `id -g` == 0 ]; then drawmenu else echo "Nie posiadasz uprawnien administratora do zarzadzania konfiguracja!" fi