CGI skripty: Porovnání verzí
Z Freenetis Wiki
(→Získání MAC adresy z ISC DHCP serveru) |
(→Získání MAC adresy z ISC DHCP serveru) |
||
(Nejsou zobrazeny 2 mezilehlé verze od stejného uživatele.) | |||
Řádek 11: | Řádek 11: | ||
== Získání MAC adresy z ISC DHCP serveru == | == 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 | #!/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 "Content-type: text/plain" | ||
echo "" | 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 |
Aktuální verze z 11. 2. 2014, 15:42
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