Witam wszystkich,
Próbuję sobie napisać skrypcik, którego zadaniem będzie dodawania do istniejącego pliku dhcpd.conf (i istniejącej w nim konfiguracji) rezerwacji adresów IP.
Wymęczyłem sobie coś takiego:
#!/bin/bash
dialog --title "Informacja" --msgbox "Za chwilę zostaniesz poproszony o podanie adresu MAC karty sieciowej komputera-klienta, adres IP, który ma być temu klientowi przydzielany oraz nazwy (dowolnej) dzierżawy. Pamiętaj, że $
dialog --title "Dodawanie statycznego IP" --inputbox "Podaj adres MAC klienta:" 6 80 2>/tmp/konfig/dhcp/static_mac
dialog --title "Dodawanie statycznego IP" --inputbox "Podaj adres IP, który ma być przydzielany do podanego adresu MAC:" 6 80 2>/tmp/konfig/dhcp/static_ip
dialog --title "Dodawanie statycznego IP" --inputbox "Podaj nazwę dzierżawy (np. 'komputer_Monika'):" 6 80 2>/tmp/konfig/dhcp/static_name
# Usuwanie ostatniejgo bracketa w pliku
#### HMMMMMMM ...... ##############
#tail -n 1 /etc/dhcp3/dhcpd.conf | tr '}' ''
mac=$(cat /tmp/konfig/dhcp/static_mac)
ip=$(cat /tmp/konfig/dhcp/static_ip)
name=$(cat /tmp/konfig/dhcp/static_name)
wpis=$(echo -e "host $name {hardware ethernet $mac;fixed-address $ip;}\\n")
dialog --title "Potwierdzenie" --yesno "Czy wpis:\\n\\n $echo \\n\\njest poprawny?" 12 80
case $? in
"0") echo "$wpis" >> /etc/dhcp3/dhcpd.conf && dialog --title "Informacja" --colors --msgbox "\\Z2 Wpis został dodany" 6 80;;
"1") dialog --title "Informacja" --colors --msgbox "\\Z2 Wpis nie zostal dodany" 6 80;;
esac
dialog --yesno "Czy chcesz dodać nowy wpis?" 6 80
case $? in
"0") dhcp_static_add.sh;;
"1") echo -e "\\n\\n\\n\\n}" >> /etc/dhcp3/dhcpd.conf && dhcp.sh;;
esac
exit 0
Generalnie działa, jednakże nie do końca. Otóż problemem jest to, że jak wiadomo w dhcpd.conf tworzy się deklaracje podsieci i w nich wszystko się zawiera, łącznie ze statycznymi przydziałami. No i nie byłoby problemu gdyby nie to, że cały taki "konfig podsieci" jest zawarty w dwóch nawiasach klamrowych.
Problem: nie wiem jak zrobić, aby kolejne wpisy dot. statycznego przydziału dodawały się PRZED zamykającym nawiasem klamrowym. Widzę dwie opcje: albo usunięcie wcześniejsze ostatniego nawiasu klamrowego z pliku (tego właśnie nie umiem zrobić) dodanie wpisu i na samym końcu ponowne dodanie usuniętego wcześniej nawiasu klamrowego LUB dodanie wpisu bezpośrednio przed zamykającym całą deklarację nawiasem klamrowym (i tego też nie wiem jak zrobić). Naszukałem się rozwiązań, próbowałem z tr, z potokami, z sed i nic :/
Efekt obecny jest taki, że po każdym dodaniu wpisu dodaje się też nadmiarowy nawias zamykający.
Proszę o pomoc i z góry dziękuję