Рассмотрим как можно определить ip адрес компьютера в локальной сети. Для этих целей можно использовать ряд инструментов — например, nmap.
Также можно написать небольшой скрипт на bash, который будет без труда справляться с поставленной задачей. Написание данного скрипта и будет рассмотрено в рамках данной статьи.
Создадим файл, который будет называться ipsearch при помощи любимого текстового редактора
mcedit ipsearch
Поместим туда следующее содержимое
#!/bin/bash for i in 192.168.1.{1..10} do if ping -c1 -w1 $i &>/dev/null then echo $i is up; exit fi done
Разберем структуру BASH скрипта позволяющего определить ip адрес компьютера в локальной сети
Как и для любого скрипта, написанного под Linux в первой строке указывается sha-bang #, затем восклицательный знак и название командного интерпретатора
В основе скрипта цикл for — переменной i последовательно присваивается значение IP-адресов из заданного диапазона.
Для каждого из них выполняется последовательность действий описанная правилом if-then — в данном случае адрес просто пингуется, результат выполнения команды при этом перенаправляется в /dev/null. Если пинг есть (адрес доступен) в консоль выводится строка
[IP-адрес] is up
Завершается if при командой fi. exit обеспечивает выход из программы после завершения цикла for. Если exit не использовать после того как будет произведена попытка пропинговать все адреса из заданного диапазона потребуется нажать на клавиатуре сочетание клавиш CTRL+Z.
Добавляем права на исполнение файлу
chmod +x ipsearch
Выполняем из консоли
./ipsearch
Поскольку точкой в командной строке Linux обозначается текущая директория — указывая ./ мы задаем полный путь до исполняемого файла. Именно поэтому скрипт выполняется несмотря на то, что путь до него не прописан в переменной $PATH (она будет рассмотрена в одной из следующих статей).
То же самое, что делает написанный скрипт можно успешно выполнять при помощи однострочного скрипта
for i in 192.168.1.{1..10};do if ping -c1 -w1 $i &>/dev/null;then echo $i is up;fi;done
Однако скриптом пользоваться, в большинстве случаев, оказывается более удобно
Также читайте о том, как вычислить маску сети по IP адресу и про классовую адресацию.