CGI skripty
Z Freenetis Wiki
Podporu pro CGI skripty je možné zapnout v sekci nastavení.
Získání MAC adresy
FreenetIS umožňuje aktuálně získávat MAC adresu kromě SNMP i pomocí vlastních CGI skriptů, které si umístíte přímo na dotyčný router. Daný skript musí vracet pouze MAC adresu.
Cesta ke skriptu je definována po povolení CGI skriptů v nastavení, přesněji v záložce Síť položkou URL pro ARP tabulku. Výchozí hodnota je http://{GATEWAY_IP_ADDRESS}/cgi-bin/arp.cgi?ip_address={IP_ADDRESS}, kde parametry {GATEWAY_IP_ADDRESS} a {IP_ADDRESS} budou nahrazeny za IP adresu brány a IP adresu, ke kterému je hledána MAC adresa.
Získání MAC adresy z ISC DHCP serveru
Bash skript
Instalace:
- Zkopírujte skript do složky s CGI skripty
- Vytvořte log
touch /var/log/arp.cgi.log && chmod 0777 /var/log/arp.cgi.log
- Upravte konfiguraci (proměnná DHCP_LEASES_FILE)
Skript:
#!/bin/bash ################################################################################ # This is a CGI script that allows to obtain MAC address from DHCP leases # by IP address that id retrieved via URL parameter. # # Authors: # Michal Kliment <kliment@freenetis.org> # Ondrej Fibich <fibich@freenetis.org> # # Version: # 0.1.2 ################################################################################ # config part ################################################################## # log (must be chmoded to 0777) LOG_FILE=/var/log/arp.cgi.log # DHCP leases file (change this according to your system) DHCP_LEASES_FILE=/var/lib/dhcp/dhcpd.leases #DEBIAN lenny:# DHCP_LEASES_FILE=/var/lib/dhcp3/dhcpd.leases # execute part ################################################################# # get IP address from URL param ip_address=`echo $QUERY_STRING | sed 's/ip_address\=\([^&]\+\).*/\1/'` # print header echo "Content-type: text/plain" echo "" # DHCP leases file not exist/not readable if [ ! -r "$DHCP_LEASES_FILE" ]; then echo "$DHCP_LEASES_FILE cannot be readed" exit 1 else # get MAC mac=`cat "$DHCP_LEASES_FILE" | grep -A6 "$ip_address" | grep "hardware ethernet" | sed -e 's/^[ \t]*//' | cut -d " " -f 3 | sed 's/;//'` # print MAC echo $mac # log if writable if [ -w "$LOG_FILE" ]; then echo "`date -u` [INFO] IP=$ip_address, MAC=$mac" >> "$LOG_FILE" fi fi