IP 및 호스트 DD-WRT를 표시하려면 셸 스크립트를 수정해야 합니다.

IP 및 호스트 DD-WRT를 표시하려면 셸 스크립트를 수정해야 합니다.

저는 Linksys EA6500 라우터에서 DD-WRT v.3.0을 실행하고 있으며 현재 라우터에 연결된 WiFi MAC 주소에 액세스할 수 있도록 다음 스크립트를 실행했습니다.

echo "#!/bin/ash" > /tmp/getmac.sh
echo 'echo { > /tmp/www/list.html' >>/tmp/getmac.sh
echo "for i in \$(arp | awk '{print toupper(\$4)}'); do echo \$i, >> /tmp/www/list.html; done" >>/tmp/getmac.sh
echo 'echo } >> /tmp/www/list.html' >>/tmp/getmac.sh
chmod +x /tmp/getmac.sh
/tmp/getmac.sh

접근할 수 있어요http://192.168.1.1/user/list.html현재 라우터에 연결된 WiFi MAC 주소 목록이 표시됩니다.

예:

{ 01:81:18:3d:49:5e, 04:10:87:8c:47:9a, }

하지만 다음 내용도 포함되도록 수정하고 싶습니다.IP 주소게다가장치 이름.

내가 찾은이것DD-WRT 웹사이트에 있는데, 명령을 실행하고 디렉터리를 확인해 보면 어디에도 표시되지 않습니다.

 # mkdir -p /tmp/www
 while [ 1 ];
  do
  wl assoclist | awk '{print tolower($2)}' > /tmp/assocLIST
  # echo "<meta http-equiv="refresh" content="10"><b>Hostnames and IP addresses of WLAN clients</b> (last update: $(date))<p>" > /tmp/www/wlan.html
  while read assocLINE
   do
     dumpleases | awk '/'"$assocLINE"'/ {print "Hostname: " $1, "MAC: " $2, "IP: " $3}'
   # echo "<br>";
        done < /tmp/assocLIST     # >> /tmp/www/wlan.html
  sleep 10;
done;

다음과 같이 출력하고 싶습니다.

{
    "data": [{
        "IP": "192.168.1.55",
        "MAC": "01:81:18:3d:49:5e",
        "HOST": "DavidsAndroidPhone"
    }, {
        "IP": "192.168.1.79",
        "MAC": "04:10:87:8c:47:9a",
        "HOST": "BobsIphone"
    }]
}

포함하도록 게시한 첫 번째 스크립트를 수정하려면 어떻게 해야 합니까?지적 재산권그리고이름?

고쳐 쓰다

내가 명령을 실행할 때ARPPuTTYtel에서 다음 메시지가 나타납니다.

DD-WRT login: root
Password:
==========================================================

     ___  ___     _      _____  ______       ____  ___
    / _ \/ _ \___| | /| / / _ \/_  __/ _  __|_  / / _ \
   / // / // /___/ |/ |/ / , _/ / /   | |/ //_ <_/ // /
  /____/____/    |__/|__/_/|_| /_/    |___/____(_)___/

                       DD-WRT v3.0
                   http://www.dd-wrt.com

==========================================================


BusyBox v1.24.1 (2016-03-07 05:09:22 CET) built-in shell (ash)

root@DD-WRT:~# arp
android-17af243062d3eb6b (192.168.1.144) at 00:ae:fa:4a:3a:4c [ether]  on br0

그래서 현재 제가 실행하고 있는 스크립트(getmac.sh)는 이것을 보고 이것만 얻습니다:

{ 00:ae:fa:4a:3a:4c, }

그렇다면 올바른 JSON 레이아웃에서 찾고 있는 정보를 더 많이 얻기 위해 스크립트를 어떻게 수정할 수 있습니까?

업데이트 2

좋습니다. 여기에 이 ​​코드가 있습니다.

arp | awk 'BEGIN { print "{" } { print "MAC:" $4 ", IP:" $2 ", HOST:" $1} END { print "}" }'

출력은 다음과 같습니다.

{
MAC:00:ae:fa:4a:3a:4c, IP:(192.168.1.144), HOST:android-17af243062d3eb6b
}

이제 위의 상황에서 어떻게 제거할 수 있습니까?(그리고)IP에서 올바른 JSON 형식으로 형식을 지정하시겠습니까? 나는 노력했다awk -F'('그러나 이것은 작동하지 않는 것 같습니다.

답변1

좋아요, 약간의 작업이 필요하겠지만 어떤 어댑터를 사용할 수 있는지 확인해 보세요.

ifconfig 

그런 다음 다음을 실행하십시오.

wl -i ethX assoclist 

ddwrt가 Wi-Fi를 사용하는 것을 찾을 때까지. 정확한 출력 구조를 얻으려면 여전히 약간의 작업이 필요하지만 원본 스크립트(및 -i 어댑터)는 작동해야 합니다.

관련 정보