#!/bin/sh [ -z $SCRIPT ] && SCRIPT=/tmp/nndconf.sh BACKTITLE="Konfigurator NND" CONFIG_NAME="samba" CONFIG_DESCR="Konfiguracja samby" logokonf="Konfigurator Samby" tmp="/tmp" #. /etc/rc.conf config="/etc/samba/smb.conf" pliki() { if [ ! -r /etc/samba/smb.conf ]; then echo "" > /etc/samba/smb.conf fi } menu() { dialog \ --clear \ --title "Konfigurator samba" \ --backtitle "$logokonf" \ --radiolist "Wybierz co chcesz zrobić:" \ 0 0 0 \ konfiguruj "Konfiguruj sambe" on \ dodaj "Dodaj udział" off \ usun "Usuń udział" off \ 2> $tmp/samba_menu if [ $? != 0 ]; then wyjscie; fi menu=$(cat $tmp/samba_menu) case "$menu" in "konfiguruj") konfiguruj menu ;; "dodaj") dodaj menu ;; "usun") usun menu ;; esac } konfiguruj() { dialog \ --clear \ --title "Nazwa serwera" \ --backtitle "$logokonf" \ --inputbox "Podaj teraz nazwę serwera jak będzie się wyświetlać w otoczeniu sieciowym" \ 8 65 "$IPLAN2" 2>$tmp/netbios_name if [ $? != 0 ]; then wyjscie; fi dialog \ --clear \ --title "Grupa robocza" \ --backtitle "$logokonf" \ --inputbox "Podaj teraz grupę roboczą w jakiej znajduje się serwer wpisz wszytsko dużymi literami" \ 8 65 "$IPLAN2" 2>$tmp/workgroup if [ $? != 0 ]; then wyjscie; fi dialog \ --clear \ --title "Interfejs" \ --backtitle "$logokonf" \ --inputbox "Podaj adres interfejsu na którym będzie działać samba np. 192.168.0.1/24 można podać 2 interfejsy odzielone spacjami" \ 8 65 "$IPLAN2" 2>$tmp/interfaces if [ $? != 0 ]; then wyjscie; fi dialog \ --clear \ --title "Host allow" \ --backtitle "$logokonf" \ --inputbox "Lista komputerów, które maja dostęp do samby. np. 10.10.10. 192.168.0. (z kopką na końcu dla calej sieci) lub 10.10.10.8 (dla konkretnego ip)" \ 8 65 "$IPLAN2" 2>$tmp/host_allow if [ $? != 0 ]; then wyjscie; fi dialog \ --clear \ --title "Logi" \ --backtitle "$logokonf" \ --inputbox "Podaj ścieżke gdzie będa zapisywane logi np. /var/log" \ 8 65 "$IPLAN2" 2>$tmp/log_file if [ $? != 0 ]; then wyjscie; fi c1=$(cat $tmp/netbios_name) c2=$(cat $tmp/workgroup) c3=$(cat $tmp/interfaces) c4=$(cat $tmp/host_allow) c5=$(cat $tmp/log_file) cat > $config <$tmp/usun if [ $? != 0 ]; then wyjscie; fi usun=`cat $tmp/usun` kasuj=`cat $config | grep "\[" | grep -v global | grep -n "\[" | tr ":" " " | grep -w $usun | cut -d " " -f 2 | cut -d "[" -f 2` ilosc_udzialow=`cat $config | grep -c "\["` gd1=`grep -n -w $kasuj $config | cut -d ":" -f 1` gd2=`grep -n "\[" $config | grep -n -w $gd1 | cut -d ":" -f 1` if [ $gd2 = $ilosc_udzialow ]; then ile=`cat $config | wc -l` ile=$[ile +1] linia=$gd1 while [ $ile -ge $gd1 ]; do sed -i -n "$linia!p" $config gd1=$[gd1 + 1] done else nx1=`grep -n "\[" $config | cut -d ":" -f 1 | grep -A1 -w $gd1 | tr "\n" ";" | cut -d ";" -f 2` linia=$gd1 while [ $gd1 -lt $nx1 ]; do sed -i -n "$linia!p" $config gd1=$[gd1 + 1] done fi } dodaj(){ nazwa="Dodawanie ucziału" dialog \ --clear \ --title "$nazwa" \ --backtitle "$logokonf" \ --inputbox "Podaj nazwe udziału" \ 8 65 "$IPLAN2" 2>$tmp/nazwa if [ $? != 0 ]; then wyjscie; fi nazwa=`cat $tmp/nazwa` szukaj=`cat $config | grep "\[$nazwa\]"` if [ $? = 0 ]; then dialog \ --clear \ --title "Błąd" \ --backtitle "$logokonf" \ --msgbox "Udział o podanej nazwie już istnieje!!" 8 65 menu fi dialog \ --clear \ --title "$nazwa" \ --backtitle "$logokonf" \ --inputbox "Podaj ścieżkę do katalogu, który ma być udostępniony" \ 8 65 "$IPLAN2" 2>$tmp/sciezka if [ $? != 0 ]; then wyjscie; fi dialog \ --clear \ --title "$nazwa" \ --backtitle "$logokonf" \ --yesno "Czy udział ma być tylko do odczytu??" 8 65 case "$?" in 0) echo "1" > /$tmp/read ;; 1) echo "0" > /$tmp/read ;; 255) wyjscie ;; esac dialog \ --clear \ --title "$nazwa" \ --backtitle "$logokonf" \ --yesno "Czy udział ma być dostępny dla wszystkich (guest ok)" 8 65 wynik=$? case "$wynik" in 0) echo "1" > /$tmp/guest ;; 1) echo "0" > /$tmp/guest ;; 255) wyjscie ;; esac if [ $wynik != 0 ]; then dialog \ --clear \ --title "$nazwa" \ --backtitle "$logokonf" \ --inputbox "Podaj nazwę/y użytkowników którzy mają mieć dostęp do udziału (oddzielaj użytkowników \",\")" \ 8 65 "$IPLAN2" 2>$tmp/users if [ $? != 0 ]; then wyjscie; fi fi c1=$(cat $tmp/nazwa) echo "["$c1"]" >> $config c2=$(cat $tmp/sciezka) echo "path =" $c2 >> $config c3=$(cat $tmp/read) if [ $c3 = 1 ]; then echo "read only = yes" >> $config else echo "read only = no" >> $config fi c4=$(cat $tmp/guest) if [ $c4 = 1 ]; then echo "guest ok = Yes" >> $config else echo "guest ok = No" >> $config c5=$(cat $tmp/users) echo "valid users =" "$c5" >> $config fi } wyjscie() { tmp=`dialog --stdout --backtitle "$BACKTITLE" \\ --title " Konfiguracja Zakończona " --radiolist \\ " Konfiguracja $CONFIG_NAME zakończona. Chcesz konfigurować inną usługę? " 13 60 2 \\ "nie" "wyjście z nndconf" "on" \\ "tak" "powrót do listy wyboru usług" "off"` case $tmp in tak) clear exec $SCRIPT ;; *) rm -f $SCRIPT clear exit 0 ;; esac } menu