Для записи:
Для внешнего USB-диска, который обычно не подключается при запуске, у меня есть запись fstab
/dev/disk/by-label/data /data xfs noauto,user,noatime 0 0
При загрузке нет ошибка, так как noauto
не дает системе попытаться смонтировать. Когда я пытаюсь смонтировать вручную без подключенного диска, я сразу получаю сообщение об ошибке
~$ mount /data
mount: special device /dev/disk/by-label/data does not exist
~$
. Если я изменяю строку в fstab на
/dev/disk/by-label/data /data xfs noauto,nofail,user,noatime 0 0
, сообщение об ошибке не появляется, даже если диск недоступен:
~$ mount /data
~$
Система: Ubuntu 16.04 с systemd.
Вы можете использовать arp-scan
:
$ arp-scan --interface=eth0 192.168.0.0/24
или nmap
:
$ nmap -sP 192.168.0.0/24
для сканирования всех адресов в сети на наличие ответа.
Проблема в том, предполагаете ли вы, что каждый компьютер, к которому подключается ваш Pi, находится в сети 192.168.0.0/24, как показано в примерах выше, или нет?
Если да, то сканирование не займет много времени - 3,56 секунды с nmap
и 2,28 секунды с arp-scan
в моей сети WiFi.
Вы предполагаете, что все находятся на полном 192.168.0.0/16, как указано в RFC 1918, что занимает около 4.5 минут с arp-scan
?
При той же скорости сканирования, сканирование 10.0.0.0/8 займет почти 18 часов.
Но если вы сканируете все 4 294 967 296 возможных IP-адресов, это может занять более полугода!
Затем, конечно, мы предполагаем, что у него есть IPv4-адрес. Он может быть на IPv6, что составляет 2 420 352 024 года!
Если вы сканируете что-то большее, чем 192.168.0.0/24, вы можете подключить клавиатуру :-)
Я не хочу лезть в рот, но не думаю, что то, что вы пытаетесь сделать, возможно с любой случайной машиной, которую вы подключит этот Pi к.
Подумайте об этом. Проблема двоякая. Во время загрузки ваш R-Pi имеет фиксированный адрес. Верно ? Если машина, к которой вы подключаетесь, не настроена с этим IP-адресом / маской подсети, как они будут общаться и обмениваться информацией? Когда у вас есть собственный ноутбук, вы находитесь в контролируемой среде. Если вы подключаетесь к случайной машине, вы должны ожидать неожиданного, а затем как вы собираетесь с этим справиться? Вы можете запустить программу для сканирования всех возможных IP-адресов, начиная с обычных подозреваемых, таких как 192.168.xy или 172.10.xy, но это очень долгий и утомительный процесс
Во-вторых, если машина, к которой вы подключаете R -Pi to находится в другой сети, скажем, через Wi-Fi или другой сетевой адаптер, все готово.
Вы должны понимать, что это не ваш R-Pi управляет соединением. Это другая сторона. А когда "другая сторона" случайна, что вы собираетесь делать?
Если вы подключите ваш r-pi к сети с разумным количеством трафика, вы сможете отслеживать ARP-трафик на интерфейсе.
Это похоже на ответ @garethTheRed, но опирается на пассивный мониторинг, а не на активное зондирование. Может пройти значительное количество времени, прежде чем будет замечен ARP-пакет. Запуск ping
или чего-то подобного с машины, с которой вы хотите подключиться, поможет.
Вы можете использовать tcpdump -l -n -i eth0 arp
, чтобы прослушать eth0 на предмет ARP-пакетов. Когда ваш скрипт обнаружит ARP who-has
или ARP Reply
пакет, извлеките IP адрес, выберите случайный IP в той же подсети, которого еще нет в ARP таблице, и попробуйте использовать его.
Альтернативно, вместо tcpdump
, вы можете запускать arp -n -i eth0 | awk 'NR>1 && !/incomplete/ {print $1}'
каждый раз, чтобы вывести список видимых IP-адресов из ARP-таблицы ядра.
WARNING: Тот факт, что вы не видели, как IP используется в сети во время просмотра не означает, что он не используется или не выделен другой машине. Это может означать, что он просто не был активен в сети в последнее время, или что вы находитесь в коммутируемой сети, и он не посылал широковещательных пакетов. Ожидайте, что на вас накричат, если вы перехватите IP-адрес, принадлежащий кому-то другому в сети. Могут быть и другие последствия в зависимости от побочных эффектов перехвата IP-адреса (например, перехват IP-адреса, принадлежащего серверу или маршрутизатору, или ноутбуку босса может стать преступлением, за которое можно уволить)
Другой вариант, который, вероятно, будет гораздо менее хлопотным, заключается в следующем:
установите статический IP-адрес на вашем r-PI. Использовать частный IP-адрес RFC-1918. Используйте одну и ту же подсеть для всех компьютеров в вашей локальной сети. Выберите ту, которая вряд ли будет использоваться на других сайтах (т.е. НЕ одну из часто используемых по умолчанию, например 192.168.0.x).
если вам нужно связаться с вашим r-PI с другой машины, просто добавьте второй IP-адрес в вашей подсети к интерфейсу ethernet этой машины, если он еще не находится в той же подсети.
Примечание: сетевые коммутаторы иногда настроены на отбрасывание пакетов из неизвестных подсетей. В этом случае лучшим вариантом будет просто сдаться и заставить ваш r-PI быть клиентом DHCP (не запускайте dhcp сервер на вашем r-PI, а затем подключите его к сети, которой вы не владеете/не контролируете или в которой работает другой dhcp-сервер).