Nowe posty

xx Dystrybucja pod HP Omen (6)
2024-03-27, 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
lamp Problem z Linux Lite po instalacji (0)
2024-03-27, 19:50:30
xx Ile pingwinów? (1)
2024-03-27, 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: Problem z manipulowaniem dhcpd.conf za pomocą skryptu  (Przeczytany 3214 razy)

plmorpheus

  • Gość
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ę

darkdancer

  • Gość
Problem z manipulowaniem dhcpd.conf za pomocą skryptu
« Odpowiedź #1 dnia: 2014-06-05, 09:04:15 »
Aby dodać tekst w przedostatniej linii pliku:
Kod: bash [Zaznacz]
sed -i '$iwitaj świecie!!!' dhcpd.conf

Będzie działać ale generalnie taki "poważniejszy" soft parsowałby konfigurację całości pliku i ją odtwarzał na podstawie odczytanych danych - to pomaga w pewnym stopniu uniknąć błędów składni w konfiguracji.

plmorpheus

  • Gość
Problem z manipulowaniem dhcpd.conf za pomocą skryptu
« Odpowiedź #2 dnia: 2014-06-19, 13:23:28 »
Dzięki wielkie - gra i buczy :)

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3049
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Problem z manipulowaniem dhcpd.conf za pomocą skryptu
« Odpowiedź #3 dnia: 2014-06-20, 13:27:26 »
A'propos wypowiedzi kol. Darkdancera - zastanów się nad jego rozwiązaniem. W dłuższej perspektywie inwestycja się zwróci. Możesz zastosować praktycznie dowolne narzędzie do obsługi makr i generacji dokumentów z szablonów: M4, CPP (preprocesor C), xalan (procesor XSLT) albo języki stworzone do takich zabaw jak PERL, PHP, Ruby czy Python.

Generalnie system, który połączy szablon i właściwe dane generując gotowy plik konfiguracyjny.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy