CGI skripty: Porovnání verzí

Z Freenetis Wiki
Přejít na: navigace, hledání
(Získání MAC adresy z ISC DHCP serveru)
(Získání MAC adresy z ISC DHCP serveru)
 
(Není zobrazena jedna 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
 +
################################################################################
 
   
 
   
  ip_address=`echo $QUERY_STRING | sed 's/searchKey\=\([^&]\+\).*/\1/'`
+
  # 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 ""
  cat /var/lib/dhcp/dhcpd.leases | grep -C2 $ip_address | grep "hardware ethernet" | sed -e 's/^[ \t]*//' | cut -d " " -f 3 | sed 's/;//'
+
   
 +
# 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