मैं सिर्फ एक नेटवर्क पर अप्रयुक्त आईपी पते का पता लगाना चाहता हूं। मुझे लगता है कि यह नैम्प के साथ संभव है। किसी भी तरह से मुझे pls कह सकते हैं?
ध्यान दें:
मुझे केवल निशुल्क आईपी सूची की आवश्यकता है।
मैं सिर्फ एक नेटवर्क पर अप्रयुक्त आईपी पते का पता लगाना चाहता हूं। मुझे लगता है कि यह नैम्प के साथ संभव है। किसी भी तरह से मुझे pls कह सकते हैं?
ध्यान दें:
मुझे केवल निशुल्क आईपी सूची की आवश्यकता है।
जवाबों:
एक तेज़ स्कैनर arp-scan है जो एक नेटवर्क पर अन्य मशीनों को "देखने" के लिए ARP का उपयोग करता है । यह मैक पते को भी लौटाता है और नेटवर्क एडेप्टर के निर्माता को निर्धारित करने की कोशिश करता है।
उदाहरण उपयोग (की जगह wlan0
द्वारा eth0
यदि आवश्यक हो):
$ 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
ध्यान दें कि यह उपयोगिता केवल उन मशीनों की रिपोर्ट करती है जो चालू हैं। ping
अवरुद्ध किया जा सकता है, लेकिन arp-scan
तब तक इसे अवरुद्ध नहीं किया जा सकता है जब किसी मशीन को नेटवर्क पर अन्य मशीनों के साथ बातचीत करने के लिए आवश्यक हो। यह सुनिश्चित करने के लिए कि एक आईपी अप्रयुक्त है, आप अपने राउटर (स्टेटिक / डायनेमिक एड्रेस के लिए) और डीएचसीपी सर्वर (डायनेमिक एड्रेस के लिए) को बेहतर तरीके से देखेंगे।
-i
, पैरामीटर का उपयोग करके पैकेट भेजने के बीच देरी को बढ़ाने की कोशिश करें -i 5
।
sudo nmap -sP -PR 192.168.0.*
(या जो भी आपका नेटवर्क है) ट्रिक करेगा।
इसे स्थापित करने के लिए उपयोग करें sudo apt-get install nmap
।
स्रोत: serverfault.com ।
बस इस का परीक्षण किया, अस्पष्ट मेजबानों सहित एक आकर्षण की तरह काम करता है, आपको -PR
विकल्प का उपयोग करने में सक्षम होने के लिए सूडो को जोड़ने की आवश्यकता है ।
sudo
)। इसके अलावा, यह संभवतः फ़ायरवॉल द्वारा अवरुद्ध है क्योंकि यह होस्ट के बंदरगाहों को भी स्कैन करता है जो खोज को धीमा कर देता है।
मुझे फ़ेसिंग उपयोगी लगती है; अन्य बातों के अलावा, यह उन पतों और सूची की एक श्रेणी देगा, जो 'जीवित' हैं और जो 'अप्राप्य' हैं। डिफ़ॉल्ट रूप से फ़ैपिंग इंस्टॉल नहीं की गई है।
sudo apt-get install fping
सरल दृष्टिकोण यह है कि इसे केवल कई पतों पर चलाया जाए।
fping -g 192.168.0.2 192.168.0.254 2>/dev/null
अप्रयुक्त आईपी की सूची बनाने के लिए थोड़ा और विस्तृत रूप से।
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
मेरा मानना है कि यह सबसे अच्छा समाधान नहीं है लेकिन यह वही करता है जो आप चाहते हैं। यह स्क्रिप्ट नेटवर्क ping
पर चलती 192.168.0.0/24
है और ARP कैश में नहीं होने पर निष्क्रिय IP की सूची देता है।
पिछले समाधानों पर लाभ:
root
उपयोगकर्ता के रूप में चलाने की कोई आवश्यकता नहीं हैअपने नेटवर्क को स्कैन करने के लिए इसे <first IP> <last IP>
मापदंडों के साथ चलाएं ।
#!/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
डाउनवोट के बाद अपडेट करें
मैंने इसे लिखा क्योंकि nmap -PR 192.168.0.*
मेरे लिए काम नहीं किया:
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
अपडेट २
एआरपी-कैश के साथ सभी मुद्दों को तय किया।
यह इसे सही तरीके से करना चाहिए:
#!/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
मुझे लगता है कि यह सरल है
# 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"
या यदि आप इसे बदलते हैं तो grep -v time
शायद यह आपके लिए ठीक काम करे