Advertisement
Guest User

Untitled

a guest
Apr 19th, 2014
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.21 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. export PATH="$PATH:/usr/bin:/usr/sbin:/sbin"
  4.  
  5. DBNAME=xxxx
  6. DBUSER=xxxx
  7. DBPASS=xxxx
  8.  
  9. # runs query in arg 1
  10. function query {
  11.   echo "$1" | mysql -N -s --user="$DBUSER" --password="$DBPASS" "$DBNAME";
  12. }
  13.  
  14. # runs query in arg 1 and selects last_insert_id()
  15. function insert {
  16.   query "$1; SELECT LAST_INSERT_ID()"
  17. }
  18.  
  19. # converts string ip into number representation
  20. function ip2num {
  21.   IFS='.' read -a b <<< "$1"
  22.   echo $((${b[0]} * (256**3) + ${b[1]} * (256**2) + ${b[2]} * 256 + ${b[3]}))
  23. }
  24.  
  25. function pingscan {
  26.   nmap -sP "$1" >/dev/null 2>/dev/null
  27. }
  28.  
  29. # updates db with current arp table data
  30. function arp2db {
  31.   arp -na | grep ether | awk '{print $2 " " $4}' |\
  32.   while read ip mac
  33.   do
  34.     ip=${ip:1: -1}
  35.     add_ip_mac "$ip" "$mac"
  36.   done
  37. }
  38.  
  39. # updates db with own interfaces
  40. function if2db {
  41.   add_ip_mac "192.168.1.252" "20:cf:30:2a:1e:8a"
  42. }
  43.  
  44. # adds the given ip with given mac to the db
  45. function add_ip_mac {
  46.     ip="$1"
  47.     mac="$2"
  48.  
  49.     qry="SELECT id FROM local_client WHERE mac_address = '$mac'"
  50.  
  51.     client_id=$(query "$qry")
  52.     if [ ! -z "$client_id" ]
  53.     then
  54.       qry="UPDATE local_client SET last_seen = NOW() WHERE id = $client_id"
  55.       query "$qry"
  56.     else
  57.       qry="INSERT INTO local_client (mac_address, first_seen, last_seen)"
  58.       qry="$qry VALUES('$mac', NOW(), NOW())"
  59.       client_id=$(insert "$qry")
  60.     fi
  61.  
  62.     num_ip=$(ip2num "$ip")
  63.     #echo "$client_id, $mac, $ip, $num_ip"
  64.  
  65.     qry="SELECT id FROM ip4_address WHERE address = $num_ip"
  66.     ip4_id=$(query "$qry")
  67.     if [ ! -z "$ip4_id" ]
  68.     then
  69.       qry="UPDATE ip4_address SET last_seen = NOW(), local_client_id = $client_id"
  70.       qry="$qry WHERE id = $ip4_id"
  71.       query "$qry"
  72.     else
  73.       qry="INSERT INTO ip4_address (address, local_client_id, first_seen, last_seen)"
  74.       qry="$qry VALUES($num_ip, $client_id, NOW(), NOW())"
  75.       query "$qry"
  76.     fi
  77. }
  78.  
  79. function wlan {
  80.  
  81.  sudo iwlist wlan0 scan 2>/dev/null | grep  '\(Cell\|Channel:\|ESSID:\|Quality=\)' |\
  82.  while read line
  83.  do
  84.   if [[ "$line" =~ " Address: " ]]
  85.   then
  86.     channel=
  87.     essid=
  88.     quality=
  89.     address=$(awk '{print $NF}' <<< "$line")
  90.   elif [[ "$line" =~ "Channel:" ]]
  91.   then
  92.     channel=$(awk -F: '{print $NF}' <<< "$line")
  93.   elif [[ "$line" =~ "ESSID:" ]]
  94.   then
  95.     essid=$(awk -F: '{print $NF}' <<< "$line")
  96.     essid="${essid:1: -1}"
  97.   elif [[ "$line" =~ "Quality=" ]]
  98.   then
  99.     quality=$(sed 's#^.*Quality=\([0-9]\+/[0-9]\+\).*$#\1#' <<< "$line")
  100.   fi
  101.  
  102.   if [ ! -z "$address" -a ! -z "$channel" -a ! -z "$essid" -a ! -z "$quality" ]
  103.   then
  104.     essid="$(tr "'" "_" <<< "$essid")"
  105.     qry="SELECT id FROM wlan WHERE essid LIKE '$essid'"
  106.     wlan_id=$(query "$qry")
  107.     if [ ! -z "$wlan_id" ]
  108.     then
  109.       qry="UPDATE wlan SET mac_address = lower('$address'), channel = $channel,"
  110.       qry="$qry quality = $quality, last_seen = NOW() WHERE id = $wlan_id"
  111.       query "$qry"
  112.     else
  113.       qry="INSERT INTO wlan (essid, channel, mac_address, quality,"
  114.       qry="$qry first_seen, last_seen) VALUES ('$essid', $channel,"
  115.       qry="$qry lower('$address'), $quality, NOW(), NOW())"
  116.       query "$qry"
  117.     fi
  118.   fi
  119.  done
  120. }
  121.  
  122. if2db
  123. pingscan "192.168.1.*"
  124. arp2db
  125. wlan
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement