сценарий для сканирования диапазона IP и возврата приводит к определенному формату

Шрифты настроены в параметрах настройки системы, не в /etc.

Btw. Ваша проблема мог бы на самом деле быть настроенный мисс DPI. Просто вызовите DPI к 96.

enter image description here

2
04.01.2012, 01:04
5 ответов

Сценарий сканирует каждый IP только однажды. Сканирование происходит в фоновом режиме (&). Вниз IP занимает время для ответа, вот почему о них сообщают позже.

1
27.01.2020, 22:01
  • 1
    , где находится фоновый материал здесь в оболочке? Я предполагаю, озадачен. Его другой ping не может получить ответ от офлайновых узлов и сообщает о них в конце после минимальных повторений по умолчанию. –  Nikhil Mulley 03.01.2012, 18:21
  • 2
    @Nikhil: функция вызвана с & (как я также упомянул): фоновая подоболочка. –  choroba 03.01.2012, 18:27

Вы ищете nmap.

# nmap -sP 10.1.150.1-10
Starting Nmap 5.00 ( http://nmap.org ) at 2012-01-04 00:02 CET
Host foo.example.com (10.1.150.2) is up (0.00066s latency).
Host bar.example.com (10.1.150.7) is up (0.00066s latency).
Nmap done: 10 IP addresses (1 host up) scanned in 1.41 seconds
3
27.01.2020, 22:01

проверьте с помощью ping-запросов повторения для неответа на узлы, который добавляет к задержке в сообщении доступности узлов к консольному выводу, в то время как об узлах онлайн, которым отвечают, сообщают сразу назад. ping имеет этот недостаток, что необходимо выполнить его для каждого хоста.

Используйте fping, лучшую альтернативу ping, который может сделать, параллельный ping на хостах, источник доступен в SourceForge http://fping.sourceforge.net/. Загрузите fping и установите его под/usr/local/sbin и сделайте его suid.

Вот пример жемчуга, который может сообщить о недостижимых узлах в конце, в то время как об узлах, которые онлайн, сообщают с их названиями DNS, можно передать вывод этого сценария к инструментам такой как grep или awk снова работать над желаемым выводом.

#!/usr/bin/perl
require 'open2.pl';
use Net::IP;

$pid = &open2("OUTPUT","INPUT","/usr/local/sbin/fping -d");

@check=();

my $ip = new Net::IP ('98.137.149.56 - 98.137.149.100') || die "Unable to generate range\n";

do {
    push (@check, $ip->ip());
} while (++$ip);


foreach(@check) { print INPUT "$_\n"; }

close(INPUT);

while(<OUTPUT>) {
  print "$_";
}

close(OUTPUT);
0
27.01.2020, 22:01

Если Вы хотите сохранить порядок, необходимо перенаправить вывод не к stdout, но в файлы. После того, как все ping сделаны, сделайте a wait ожидать последнего фонового процесса для окончания. Затем кошка файлы результата в "правильном" порядке.

0
27.01.2020, 22:01

добавление -w к ping позволит сделать процесс намного быстрее.

#!/bin/bash

is_alive_ping()
{
  ping -c 1 -w 1 $1 > /dev/null
  [ $? -eq 0 ] && echo $i ,Alive
}

for i in 192.168.213.{1..254}
do
is_alive_ping $i &
done
0
27.01.2020, 22:01

Теги

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