dhcpd.conf 파일의 서브넷에 MAC 주소를 삽입하는 명령이 있습니까?

dhcpd.conf 파일의 서브넷에 MAC 주소를 삽입하는 명령이 있습니까?

파일을 수동으로 건드릴 필요 없이 dhcpd.conf 파일에 호스트를 삽입할 수 있는 명령을 찾고 있습니다.

나는 CentOS 버전 5.3을 사용하고 있습니다.

파일은 다음과 같습니다.

subnet 97.129.0.0 netmask 255.255.240.0 {
    deny unknown-clients;
    range 97.129.2.2 97.129.2.254;
    group {
            filename "3M-1M-OKS2016NOV.cm";
            host client1 {
                    hardware ethernet 00:04:0d:0c:0f:0a;
                    }
            host client2 {
                    hardware ethernet a0:be:cd:ea:1d:14;
                    }
            ###Block I wanto to insert
            host client_i_want_to_insert {
                    hardware ethernet e3:ee:ed:ea:1d:e4;
                    }
            ###########
    }}

답변1

  • 특정 문자열 처리 질문에 대답하려면 다음을 수행하십시오.

    sed다음을 사용하여 행을 삽입 할 수 있습니다 .앞으로사용 사례에 적합한 파일 중간의 문자열입니다.

    따라서 파일이 다음과 같다고 가정합니다.

    서브넷 97.129.0.0 넷마스크 255.255.240.0 { 알 수 없는 클라이언트 거부, 범위 97.129.2.2 97.129.2.254; 그룹 { 파일 이름 "3M-1M-OKS2016NOV.cm"; 하드웨어 이더넷 00:04:0d :0c:0f:0a ; } 호스트 클라이언트2 { 하드웨어 이더넷 a0:be:cd:ea:1d:14 } #### }}

    넌 할 수있어:

    sed -i '/####/i\ \thost client_i_want_to_insert {\n\Hardware Ethernet e3:ee:ed:ea:1d:e4;\n\t}\n' /etc/dhcp/dhcpd.conf


그러나 나는 과거에 여러 ISP 케이블 모뎀을 관리한 적이 있습니다. (저는 해당 회선이 filename "3M-1M-OKS2016NOV.cm";케이블 모뎀 프로필을 제공하는 것으로 분명히 인식했습니다.)

추가하고 싶은 몇 가지 제안이 있습니다.

- Having a host definition spanning several lines is not practical. Over time the DHCP file will become unwieldy. For scripting it is

줄을 삽입하거나 삭제하는 것이 더 어렵습니다. 다음과 같이 한 줄로만 수행하는 것이 좋습니다.

       host client2 { hardware ethernet a0:be:cd:ea:1d:14; }

- The names of hostnames also have to be unique. Either you increment them, or use your customer code *if* a numeric code.
- an alternative, when incrementing the host part, is putting a comment with the customer code *after* the host definition. As an

추가적인 이점은 일부 구성 오류를 수동으로 수정하거나 빠른 개입을 수행해야 하는 경우 파일 작업이 더 쉽다는 것입니다.

       host client2 { hardware ethernet a0:be:cd:ea:1d:14; } #_cus234XP_

따라서 고객을 삭제할 때, 한 줄의 텍스트를 처리하려면 또는 만 있으면 grep -v됩니다 sed.

또한 ISC DHCP를 사용하면 include파일을 생성할 수 있습니다. 구성 파일 중간에 줄을 삽입할 필요가 없도록 다음을 수행할 수 있습니다.

   subnet 97.129.0.0 netmask 255.255.240.0 {
       deny unknown-clients;
       range 97.129.2.2 97.129.2.254;
       group {
               filename "3M-1M-OKS2016NOV.cm";
               include "customers";
       }}

그러면 클라이언트 파일은 다음과 같아야 합니다.

   host client1 { hardware ethernet 00:04:0d:0c:0f:0a; } #_cus234XP_
   host client2 { hardware ethernet a0:be:cd:ea:1d:14; } #_cus235XZ_

따라서 새 CM/고객을 파일 끝에 추가하면 최소한 새 고객을 추가할 때 sed/ 를 처리할 필요가 없습니다.awk


또한 CM 모뎀/클라이언트에 대한 DHCP 구성을 구현하기 위해 다른 가능한 솔루션을 고려하는 것이 좋습니다.

저는 수년 동안 ISC DHCP 텍스트 파일을 처리하기 위한 구성 소프트웨어를 작성해 왔습니다. 이 프로세스에는 몇 가지 제한 사항이 있습니다.

- Each time a new item is removed/inserted, the service has to be restarted;  
- If by chance you duplicate an host, the service won't restart;
- Any kind of parsing has to be done in text mode, or done in ancillary/duplicate methods;
- If some auxiliary housekeeping is done by hand, it is prone to errors. 

docsis_server그러다가 그것이 오픈 소스 미들웨어의 공급으로 케이블 TV 업계를 위해 특별히 개발된 Linux용 MySQL 기반의 "해킹된" ISC DHCP라는 사실을 발견했습니다 . 나는 그 위에 구성 소프트웨어/웹 프런트엔드를 작성하게 되었습니다. (텍스트 파일 대신) MySQL 쿼리를 처리하여 DHCP 서비스와 직접 상호 작용할 수 있다는 것은 큰 이점입니다.

안타깝게도 프로젝트가 더 이상 유지되지 않는 것 같습니다.https://github.com/bschirrmeister/docsis_server

현재 ISC의 DHCP용 Kea 프로젝트도 있으니 살펴볼 가치가 있습니다. 그 위에 공급 솔루션을 개발하는 것은 매우 흥미로운 것 같습니다.https://kea.isc.org

Kea는 DHCPv4, DHCPv6 서버, 동적 DNS 데몬, REST API 인터페이스, MySQL, PostgreSQL 및 Cassandra 데이터베이스, RADIUS 및 NETCONF 인터페이스 및 관련 유틸리티를 포함하는 오픈 소스 소프트웨어 시스템입니다.

마지막으로, 일반적으로 케이블 모뎀 제어 네트워크는 10.xxx 범위의 개인 IP 주소 공간입니다. 사용 중인 케이블 모뎀에 공용 IP 주소(예: 97.129.2.x)를 제공할 필요가 없습니다.

PS AFAIK, 제가 작성한 구성 솔루션은 docsis_server10년 동안 생산되었습니다.

답변2

이상한 솔루션

awk '/}}/{$0="\thost client3 {\n\t\thardware ethernet a:b:c;\n\t}\n"$0}1' file

관련 정보