Как найти неиспользуемый IP-адрес в сети?

Это означает, что у вас установлено несколько openjdk, но нет Oracle Java. Вы можете выбирать между этими с sudo update-alternatives --config javac.

Но чтобы установить oracle java, вы должны следовать этому руководству.

Если вы хотите, вы можете удалить openjdk перед установкой oracle java с помощью sudo apt-get remove openjdk-6-jre default-jre default-jre-headless или / и следовать этому , чтобы удалить openjdk7.

Если вы хотите, вы можете оставить их, но это зависит от того, что вы хотите. Openjdk тоже хорошо.

Надеюсь, это было достаточно ясно. Будь здоров.

25
задан 16.04.2020, 08:42

6 ответов

Быстрый сканер - это arp-scan , который использует ARP для «просмотра» других машин в сети. Он также возвращает MAC-адрес и пытается определить производителя сетевого адаптера.

Пример использования (при необходимости замените 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 не может быть заблокировано, поскольку необходимо, чтобы машина взаимодействовала с другими машинами в сети. Чтобы убедиться, что IP-адрес не используется, вам лучше взглянуть на свой маршрутизатор (для статических / динамических адресов) и DHCP-сервер (для динамических адресов).

0
ответ дан 16.04.2020, 08:42
  • 1
    2/5. Увеличение задержки добилось цели. Спасибо! – Flexo 16.04.2020, 08:43
  • 2
    @bumblingfool: действительно ли Вы уверены, что другие хосты находятся на той же подсети? Например, 192.168.1.x и не 192.168.2.x? – Erik Aderhold 16.04.2020, 08:43
  • 3
    О каком количестве хостов мы говорим? Попытайтесь увеличить задержку между отправкой пакетов с помощью -i параметр, например, -i 5 для 5 мс. – Nathaniel Hoyt 16.04.2020, 08:44
  • 4
    Да, все хосты находятся на той же подсети. Я выполнил его еще дюжину раз и 2/3rds времени, которое разоблачили все хосты. Интересно(?) это всегда - те же хосты это don' t обнаруживаются (если таковые имеются)... Это находится в сети Wi-Fi, но сигнал тверд. Кроме того, вышеупомянутое последовательно упоминало nmap метод doesn' t пропускают любые хосты. – sean1093 16.04.2020, 08:44
  • 5
    Я хотел любить это, но это пропустило пару хостов, когда я протестировал его?!?: ( – Akash 16.04.2020, 08:45

Я считаю, что fping полезен; среди прочего, он пингует диапазон адресов и список, которые «живы» и «недоступны». fping не устанавливается по умолчанию.

sudo apt-get install fping

Простой подход - просто запустить его по диапазону адресов.

fping -g 192.168.0.2 192.168.0.254 2>/dev/null

Немного сложнее, чтобы составить список неиспользуемых IP-адресов.

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
0
ответ дан 16.04.2020, 08:43
  • 1
    Don' t забывают, что это предполагает, что хосты отвечают на Эхо-запрос ICMP (иначе ping). Не каждый хост делает это, особенно некоторые машины MS Windows don' t. Также брандмауэры обычно отключают это, даже при том, что они онлайн и имеют MAC-адрес в Вашей сети. Это - быстрое решение, но shouldn' t полагаться в каждой ситуации. – Alex Polkhovsky 16.04.2020, 08:43
  • 2
    You' право ре; решение, включающее nmap или некоторая альтернатива для проверки с помощью ping-запросов, который может использовать протоколы кроме ICMP, было бы более надежным. – Sahil J 16.04.2020, 08:44

sudo nmap -sP -PR 192.168.0.* (или какова бы ни была ваша сеть) сделают свое дело.

Для его установки используйте sudo apt-get install nmap.

Источник: serverfault.com .

Только что проверил, работает как шарм, включая скрытые хосты, вам нужно добавить sudo, чтобы использовать опцию -PR.

0
ответ дан 16.04.2020, 08:43
  • 1
    I' ve просто протестировал его, Вы должны работать, как корень (т.е. использование sudo). Кроме того, it' s, вероятно, заблокированный брандмауэром, поскольку это также сканирует порты хоста, который также замедляет поиск. – Sam 16.04.2020, 08:44
  • 2
    Необходимо включать это в ответ тогда, не все хотят следовать за источниками. Также it' d быть полезным для описания то, что на самом деле делает команда. – sleath 16.04.2020, 08:44
  • 3
    Читайте исходное сообщение, 3-й комментарий объясняет, как не использовать (ненужное) сканирование портов;) – Fr0zenFyr 16.04.2020, 08:44
  • 4
    сделанный;) действительно хорошие работы. – andres descalzo 16.04.2020, 08:45
  • 5
    Havent протестировал (или когда-либо использовал), arp-сканирование, спасибо за предложение! – Libu Mathew 16.04.2020, 08:45
1110] Я считаю, что это не лучшее решение, но оно делает то, что вы хотите. Этот скрипт запускает ping по 192.168.0.0/24 сети и возвращает список неактивных IP-адресов, если их нет в ARP-кэше.

Преимущества по сравнению с предыдущими решениями:

  • использует оба метода: ping и проверку ARP
  • нет необходимости работать, поскольку root пользователь
  • работает около 1,5 мин. на моем Core i3-2100

Для сканирования вашей сети запустите ее с параметрами <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

Обновление после downvote

Я написал его, потому что 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

Обновление 2 [1118 ]

Исправлены все проблемы с ARP-кешем.

0
ответ дан 16.04.2020, 08:43

Это должно быть сделано правильно в 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
0
ответ дан 16.04.2020, 08:44

я думаю, что это проще

# 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
0
ответ дан 16.04.2020, 08:45
  • 1
    Можно хотеть взглянуть на код. В моей подсети это показывает мне всего дюйм/с даже те, которые взяты. – Joel Coehoorn 16.04.2020, 08:45
  • 2
    нет, я тестирую его, и хорошо работает для меня, на самом деле Вы can' t устанавливают те IP-адреса, живой becuase, я добавляю grep "is unreachable" или если Вы живете, изменяются, это к grep -v time, возможно, хорошо работает для Вас – p.campbell 16.04.2020, 08:46

Теги

Похожие вопросы