#!/bin/bash
stty -echo
IFS= read -p 'Enter password: ' -r password
stty echo
printf '\nPassword entered: %s\n' "$password"
stty -echo
выключает терминальное эхо, которое является дисплеем, о котором Вы говорите;IFS=
необходимо для сохранения пробела в пароле;read -r
выключает интерпретацию обратной косой черты.В bash
можно также использовать read -s
, но эта функция не является стандартной через оболочки.
Можно сделать это в выполняющем двух шагов:
Просканируйте свою подсеть для заполнения кэша ARP. Существуют методы, но я предлагаю fping
. Установите его на Ubuntu путем выполнения рева команды в терминале:
apt-get install fping
... затем просканируйте свою сеть (например, подсеть 192.168.10.0/24):
fping -g 192.168.10.0/24
Теперь кэш ARP заполнен MAC-адресом устройств в Вашей подсети.
Примените соответствующий фильтр на свой кэш ARP, чтобы просто видеть целевое устройство. Просто используйте следующую команду (где aa:bb:cc:dd:ee:ff
MAC устройства):
arp -n | grep -i aa:bb:cc:dd:ee:ff | cut -c-15
Вывод является IP-адресом целевого устройства.
Демонстрационный MAC-адрес был изменен на нижний регистр, потому что Linux показывает его этим способом (в отличие от Microsoft Windows с помощью верхнего регистра)
Следующий сценарий удара добавляет запись в файл hosts (/etc/hosts
) с сотовым телефоном имени, таким образом, можно получить доступ устройству с сотовым телефоном имени. К IP-адресу, связанному с обновлением просто выполняет его снова. Изменение name
,mac
и subnet
к требуемым значениям.
#!/bin/sh
name="cellphone"
mac=aa:bb:cc:dd:ee:ff
subnet=192.168.10.0/24
fping -g ${subnet}
ip="$(arp -n | grep -i ${mac} | cut -c-15)"
sed -i".bak" '/'${name}'/d' /etc/hosts
if [ -z "$ip" ]; then
echo "Device not found!"
else
echo "${ip}\t${name}" >> /etc/hosts
fi
Zeroconf мог бы быть решением здесь. Это - протокол, чтобы обнаружить сервисы на сеть и установить ссылку между двумя хостами.
Если Вы настраиваете avahi mDNS (пакеты avahi-daemon
и libnss-mdns
) хосты рекламируют свои имена хостов, и можно разрешить их с <hostname>.local
.
Это кажется, что Ваша проблема состоит в том, что Вы включаете что-то в сеть, и Вы хотите смочь знать, какой IP это получит.
На той основе это кажется, что самое простое возможное решение состоит в том, чтобы настроить Ваш сервер DHCP для выделения статического IP для соответствующего MAC-адреса.
Вы управляете сервером DHCP? Раз так Вы могли, вероятно, сделать одну из двух вещей:
arp -n | grep -i AA:BB:CC:DD:EE:FF | cut -c 1-15
. Так как Вы упоминаете arp: Я задавался вопросом, могу ли я использовать его, или подобный для присвоения имени хоста IP, я получил таким образом. Таким образом, что у меня может быть статический ssh файл конфигурации. – highsciguy 18.10.2013, 20:52nmap
, но это просто, потому что это - то, к чему я привык. Хороший ответ. Идеальное решение. – bahamat 18.10.2013, 21:12