Saya hanya ingin mengetahui Alamat IP yang tidak digunakan pada jaringan. Saya pikir itu mungkin dengan nmap. Adakah yang bisa mengatakan padaku jalan pls?
catatan:
Saya hanya perlu daftar IP gratis saja.
Saya hanya ingin mengetahui Alamat IP yang tidak digunakan pada jaringan. Saya pikir itu mungkin dengan nmap. Adakah yang bisa mengatakan padaku jalan pls?
catatan:
Saya hanya perlu daftar IP gratis saja.
Jawaban:
Pemindai cepat adalah arp-scan yang menggunakan ARP untuk "melihat" mesin lain di jaringan. Ini juga mengembalikan alamat MAC dan mencoba menentukan pembuat adaptor jaringan.
Contoh penggunaan (ganti wlan0
dengan eth0
jika perlu):
$ sudo arp-scan -I wlan0 192.168.1.0/24
Interface: wlan0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.6 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.1.10 00:90:f5:33:e2:f2 CLEVO CO.
192.168.1.254 00:14:7f:72:cd:05 Thomson Telecom Belgium
2 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.6: 256 hosts scanned in 1.406 seconds (182.08 hosts/sec). 2 responded
Perhatikan bahwa utilitas ini hanya melaporkan mesin yang dinyalakan. ping
dapat diblokir, tetapi arp-scan
tidak dapat diblokir karena itu diperlukan untuk mesin untuk berinteraksi dengan mesin lain di jaringan. Untuk memastikan bahwa IP tidak digunakan, Anda sebaiknya melihat router Anda (untuk alamat statis / dinamis) dan server DHCP (untuk alamat dinamis).
-i
parameter, mis. -i 5
Selama 5 ms.
sudo nmap -sP -PR 192.168.0.*
(atau apa pun jaringan Anda) akan melakukan trik.
Untuk menginstalnya gunakan sudo apt-get install nmap
.
Sumber: serverfault.com .
Baru saja diuji ini, berfungsi seperti mantra termasuk host yang dikaburkan, Anda perlu menambahkan sudo untuk dapat menggunakan -PR
opsi.
sudo
). Selain itu, mungkin diblokir oleh firewall karena juga memindai port host yang juga memperlambat pencarian.
Saya merasa fping bermanfaat; antara lain, itu akan melakukan ping ke berbagai alamat dan daftar yang 'hidup' dan yang 'tidak terjangkau'. fping tidak diinstal secara default.
sudo apt-get install fping
Pendekatan sederhananya adalah dengan menjalankannya pada rentang alamat.
fping -g 192.168.0.2 192.168.0.254 2>/dev/null
Sedikit lebih rumit, untuk menghasilkan daftar IP yang tidak digunakan.
fping -g 192.168.0.2 192.168.0.254 2>/dev/null | grep 'is unreachable' | cut -d ' ' -f 1 | sort -t '.' -k 4 -n
Saya percaya itu bukan solusi terbaik tetapi melakukan apa yang Anda inginkan. Script ini berjalan ping
melalui 192.168.0.0/24
jaringan dan mengembalikan daftar IP yang tidak aktif jika tidak ada dalam cache ARP.
Keuntungan dibandingkan solusi sebelumnya:
root
penggunaUntuk memindai jaringan Anda jalankan dengan <first IP> <last IP>
parameter.
#!/usr/bin/env python
from threading import Thread
import subprocess
from Queue import Queue
verbose = False
num_threads = 8
queue = Queue()
inactive_ips = [0 for i in range(256)]
lines = open("/proc/net/arp", "r").readlines()
arp_cache = [l.split()[0] for l in lines[1:] if l.split()[2] == "0x2"]
def ip_str_to_int(ip):
ip = ip.rstrip().split('.')
ipn = 0
while ip:
ipn = (ipn << 8) + int(ip.pop(0))
return ipn
def ip_int_to_str(ip):
ips = ''
for i in range(4):
ip, n = divmod(ip, 256)
ips = str(n) + '.' + ips
return ips[:-1] ## take out extra point
#wraps system ping command
def pinger(i, q):
while True:
ip_num = q.get()
ip = ip_int_to_str(ip_num)
if ip not in arp_cache:
ret = subprocess.call("ping -c 1 %s" % ip,
shell=True,
stdout=open('/dev/null', 'w'),
stderr=subprocess.STDOUT)
if ret != 0:
inactive_ips[ip_num % 256] = ip
q.task_done()
if __name__ == '__main__':
from optparse import OptionParser
usage = "usage: %prog [options] [first IP] [last IP]"
parser = OptionParser(usage=usage)
parser.add_option("-v", "--verbose", action="store_true", dest="verbose", help="make lots of noise")
parser.add_option("-q", action="store_false", dest="verbose", help="print only IP adresses")
(options, args) = parser.parse_args()
verbose = options.verbose
first = ip_str_to_int(args[0] if len(args) > 0 else "192.168.0.1")
last = ip_str_to_int(args[1] if len(args) > 1 else "192.168.0.254")
if verbose:
print "Scanning inactive network addresses from %s to %s" % (
ip_int_to_str(first),
ip_int_to_str(last))
for i in range(num_threads):
worker = Thread(target=pinger, args=(i, queue))
worker.setDaemon(True)
worker.start()
for ip in range(first, last + 1):
queue.put(ip)
queue.join()
for ip in inactive_ips:
if ip:
print ip
Perbarui setelah downvote
Saya menulisnya karena nmap -PR 192.168.0.*
tidak bekerja untuk saya:
Starting Nmap 5.21 ( http://nmap.org ) at 2011-10-06 15:34 EEST
Nmap done: 256 IP addresses (0 hosts up) scanned in 0.03 seconds
Perbarui 2
Memperbaiki semua masalah dengan ARP-cache.
Ini harus dilakukan dengan benar di bash:
#!/bin/bash
#setting language variables for subshell making sure we grep for the right word
LC_ALL=C
LANG=C
# retrieve IP from user input
read -p "Input your network (example: 192.168.0): " my_net
for i in $(seq 1 254);
do
ip="$my_net.$i"
check="$(ping -c1 "$ip")"
if [ "$(grep "Unreachable" <<<"$check")" != "" ]
then
echo "$ip is unreachable"
fi
done
Saya pikir ini lebih sederhana
# my_net define my Net_ID
my_net=192.168.1.
for i in `seq 1 254`;
do
ip="$my_net$i"
ping -c2 $ip | grep "is unreachable" | cut -d" " -f1 &
done
"is unreachable"
atau jika Anda tinggal mengubahnya agar grep -v time
mungkin berfungsi dengan baik untuk Anda