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 Webサイトにありますが、コマンドを実行してディレクトリを確認してもどこにも表示されません。

 # 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アダプタ)は機能する必要があります。

おすすめ記事