[AI코딩] 늦은 밤까지 폰을 하지 않도록 해달라고 했더니

2023. 3. 14. 18:39인간이 묻고 인공지능이 답하다

집집마다 스마트폰때문에 신경전이 벌어집니다. 그렇다고 매일 싸울 수 도 없습니다. 그래서 인공지능 ChatGPT에게 늦은밤부터 이른 아침까지 특정 폰이나 노트북만 해당 시간에 인터넷에 접속할 수 없도록 프로그램을 짜달라고 부탁했습니다. 



프로그램을 구현하기 위해 Linux 기반의 공유기를 사용할 것입니다. 이를 위해 iptables와 crontab을 사용합니다. iptables는 리눅스 기반의 방화벽으로, 네트워크 패킷을 검사하고 허용하거나 차단하는 역할을 합니다. crontab은 일정 주기로 특정한 작업을 실행할 수 있도록 하는 기능입니다.

iptables 명령어는 리눅스에서 사용하는 방화벽입니다. 이 명령어를 사용하여 네트워크 패킷을 검사하고, 필요에 따라 차단하거나 허용할 수 있습니다. 이를 위해 다음과 같은 명령어를 사용합니다.

iptables -A [chain] -p [protocol] --dport [port] -j [action]
이 명령어는 [chain]에서 [protocol]을 사용하는 [port]로 오는 패킷을 [action]으로 처리하라는 의미입니다. [chain]은 INPUT, OUTPUT, FORWARD 등이 될 수 있습니다. [protocol]은 TCP, UDP 등의 프로토콜을 사용할 수 있습니다. [port]는 0~65535의 포트 번호를 입력합니다. [action]은 ACCEPT, DROP, REJECT 등을 사용할 수 있습니다.

iptables-save > [filename]
이 명령어는 iptables의 설정을 [filename]으로 저장합니다.

iptables-restore < [filename]
이 명령어는 [filename]에 저장된 iptables의 설정을 복원합니다.

다음으로, crontab 명령어는 리눅스에서 일정 주기로 반복되는 작업을 설정하는 명령어입니다. 이를 위해 다음과 같은 명령어를 사용합니다.

crontab -e
이 명령어는 현재 사용자의 crontab 파일을 엽니다. 이 파일에 작성된 내용이 일정 주기로 반복됩니다.

command
이 명령어는 매 분마다 command를 실행합니다. 이를 원하는 주기로 변경하려면, 다음과 같이 작성합니다.

분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7)
예를 들어, 매일 밤 11시에 프로그램을 실행하고 싶다면, 다음과 같이 작성합니다.

0 23 * * * command
위와 같은 방식으로 iptables와 crontab 명령어를 사용하여 프로그램을 구현할 수 있습니다.

Copy to Clipboardclipboard emoji


무선 단말기의 맥어드레스와 전화번호를 자동으로 수집하기 위해, 우선 공유기에서 DHCP 서버를 활성화합니다. DHCP 서버는 무선 단말기가 공유기에 접속할 때마다, 해당 단말기에 대한 IP 주소와 맥어드레스 정보를 기록합니다. 이를 활용하여 맥어드레스와 전화번호를 자동으로 수집할 수 있습니다.

공유기에서 맥어드레스와 전화번호를 수집하는 방법은 다음과 같습니다.

공유기 관리자 페이지에 접속합니다.
일반적으로 브라우저에서 공유기의 IP 주소를 입력하여 관리자 페이지에 접속합니다.
관리자 계정으로 로그인합니다.
공유기 모델에 따라 기본 계정과 비밀번호가 설정되어 있습니다.
클라이언트 리스트 또는 DHCP 클라이언트 리스트를 확인합니다.
공유기 관리자 페이지에서는 연결된 클라이언트의 맥어드레스와 IP 주소, 호스트 이름, 연결된 시간 등의 정보를 확인할 수 있습니다.
이 중에서 맥어드레스와 전화번호를 확인할 수 있는 항목은 맥어드레스입니다.
맥어드레스를 이용하여 전화번호를 확인합니다.
맥어드레스는 클라이언트의 고유한 식별자입니다.
공유기 관리자 페이지에서 맥어드레스를 확인한 후, 인터넷 검색 등을 통해 해당 맥어드레스를 사용하는 기기의 제조사나 모델명 등의 정보를 파악합니다.
해당 기기의 제조사나 모델명을 이용하여 해당 제조사나 서비스 업체의 웹사이트를 방문하여, 해당 기기가 등록된 전화번호를 확인할 수 있는 경우가 있습니다.
위와 같은 과정을 통해 공유기에서 맥어드레스와 전화번호를 수집할 수 있습니다. 다만, 모든 기기에서 맥어드레스를 사용하는 것은 아니므로, 해당 기기에서 맥어드레스와 전화번호를 수집할 수 있는 지 여부를 미리 파악해야 합니다.


프로그램을 실행하기 위해, crontab을 사용하여 매일 밤 11시에 프로그램이 실행되도록 설정합니다. 프로그램은 다음과 같은 순서로 동작합니다.

등록된 무선 단말기 목록을 불러옵니다.
DHCP 서버에서 맥어드레스와 전화번호를 수집합니다.
등록된 무선 단말기 목록에 해당되는 단말기는 제외합니다.
나머지 단말기들의 인터넷 접속을 제한합니다.
관리자가 특정 단말기의 제한을 해제할 수 있도록 합니다.
위의 동작 순서를 바탕으로, 다음과 같은 프로그램을 구현할 수 있습니다.

등록된 무선 단말기 목록을 설정 파일에서 불러옵니다.
DHCP 서버에서 맥어드레스와 전화번호를 수집합니다.
등록된 무선 단말기 목록에 해당되는 단말기는 제외합니다.
iptables를 사용하여 나머지 단말기들의 인터넷 접속을 제한합니다.
관리자가 특정 단말기의 제한을 해제할 수 있는 웹 인터페이스를 구현합니다.

관리자용 인터페이스는 다음과 같이 구성될 수 있습니다.

로그인 페이지
관리자 계정으로 로그인하기 위한 페이지입니다.
로그인 정보를 입력하여 인증된 관리자만이 관리자용 인터페이스에 접근할 수 있도록 합니다.
대시보드 페이지
공유기에 연결된 기기의 현황과 네트워크 사용량 등의 정보를 제공하는 페이지입니다.
맥어드레스와 전화번호를 수집한 기기의 정보도 함께 제공합니다.
클라이언트 리스트 페이지
연결된 클라이언트의 맥어드레스, IP 주소, 호스트 이름, 연결된 시간 등의 정보를 제공하는 페이지입니다.
관리자는 클라이언트 리스트에서 특정 기기의 맥어드레스를 확인할 수 있습니다.
맥어드레스 검색 페이지
맥어드레스를 검색하여 해당 기기의 정보와 전화번호를 확인할 수 있는 페이지입니다.
검색 기능을 통해 맥어드레스로 등록된 전화번호를 확인할 수 있습니다.