2

Кто-нибудь знает, как пройти через BASH (в частности, терминал OSX, но я бы предпочел решение BASH only со встроенной функциональностью OSX) для обнаружения известного компьютера в общедоступной сети (на которой я также расположен)?

Я думал, что, поскольку я знаю MAC-адрес компьютера, который я пытаюсь найти, я мог бы просто разрешить его в IP-адрес, но я не совсем уверен, как бы я решил преобразовать MAC-адрес в локальный IP-адрес в публичной сети с помощью команд BASH.

Моя цель - создать решение на основе сценариев, которое позволит мне настроить значок на рабочем столе, который при двойном щелчке мыши обнаруживает известный компьютер в сети и соответствующий ему локальный IP-адрес, создает туннель SSH для VNC, а затем открывает приложение для совместного использования экрана через туннель SSH. По сути, дважды щелкните, чтобы открыть защищенное соединение для совместного использования экрана в общедоступной сети без стороннего программного обеспечения и только инструментов, доступных через BASH и OSX.

Все это происходит в одной и той же общедоступной сети Wi-Fi. Например, представьте, что два человека ходят в одну кофейню. Я хочу, чтобы человек А сканировал IP-адрес человека Б, учитывая, что он уже знает IP-адрес человека Б.

4 ответа4

1

Они делают для этого нечто, называемое DNS-именем. Если это публичный сервер, то, скорее всего, он есть. Если этого не произойдет, то вы захотите создать свой собственный, если у вас уже есть DNS-имя в вашей организации, просто добавьте новую запись A на вашем DNS-сервере, которая задает новый поддомен для этого сервера. В общем, все публичные серверы используют статические IP-адреса, хотя даже в этом нет необходимости. IP никогда не должен меняться, поэтому просто используйте его. Если IP-адрес меняется, вам нужно либо установить на сервере динамический DNS-клиент, который будет автоматически обновлять запись DNS, либо разработать собственную систему (возможно, скрипт, который хранит ваши файлы хоста). ) обновлено [я имею в виду файлы хоста на каждом из ваших клиентов, а не на сервере]). Кроме того, нет необходимости беспокоиться о локальном IP против публичного IP. Это то, что ваш маршрутизатор знает, как управлять автоматически. Пока ваша таблица маршрутизации настроена правильно, она найдет лучший путь к серверу. Если у вас есть домашний маршрутизатор, то все это будет обрабатываться автоматически за кулисами.

Обновить

Я просто подумал о хорошем решении, которое должно работать. Получите облачный диск, такой как Google Drive. Настройте его на обоих компьютерах для правильной синхронизации. Затем попросите другой компьютер записать в папку синхронизации файл, содержащий локальный IP-адрес:

echo `ifconfig eth0 2>/dev/null|awk '/inet addr:/ {print $2}'|sed 's/addr://'` > /home/user/share/pcname_current_ip

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

1

Краткий ответ. Вероятно, самое простое - это установить на ноутбуках что-то вроде клиента динамического обновления DNS, чтобы отслеживать их динамический IP-адрес, когда они не находятся в вашей локальной сети.

Еще несколько слов: проблема в том, что, имея только MAC-адрес, вы вынуждены сканировать подсеть, чтобы найти автоответчик с этим MAC-адресом, когда вы называете его IP-адрес. Другая сторона проблемы заключается в том, что этот IP-адрес меняется каждый раз, когда удаленный компьютер подключается к провайдеру (или ADSL сбрасывает соединение и назначает другой IP-адрес).

Проще всего, если эта машина (ноутбук) каким-то образом сообщает текущий IP. Способ сделать это, чтобы использовать динамический клиент обновления DNS. Существует даже Linux-демон ddclient, который помогает с [динамическими IP-серверами]. (Http://ubuntuguide.org/wiki/Dynamic_IP_servers)

После этого вы выбираете свое имя (например, «мое имя».AtFreeOrCommercialProvider.org ') и включите на ноутбуке программу для обновления IP, достаточно будет написать из офиса вышеприведенную строку, чтобы узнать текущий IP удаленного компьютера:

host myname.AtFreeOrCommercialProvider.org  

после того, как вы сможете написать его в свой скрипт и использовать, как вы хотите.


Больше слов о оригинальном способе Суть вашего оригинального вопроса

Я знаю MAC-адрес компьютера, который пытаюсь найти, я мог бы просто разрешить его до IP- адреса, но я не совсем уверен, как бы я решил преобразовать MAC-адрес в локальный IP-адрес в публичной сети, используя BASH команды.

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

  1. nbtscan , например, nbtscan 192.168.1.0-255 , просканирует указанную вами группу IP-адресов, отвечая на IP-адрес, имя NetBIOS, сервер, пользователь, MAC-адрес. (Если 192.168.1.xxx - ваша локальная сеть ...)
  2. arp без спецификатора режима напечатает текущее содержимое таблицы соседей сети IPv4 с IP-адресом и MAC-адресом.
    Из того же семейства инструментов sudo arp-scan --interface=eth0 192.168.0.0/24 если вы используете кабельное соединение, или sudo arp-scan --interface=wlan0 192.168.0.0/24 если вы используете беспроводное соединение ...
  3. nmap -sP xxx.xxx.xxx.xxx на всех ваших локальных сетевых адресах и фильтруйте их по известным MAC-адресам.
  4. nmblookup если вы знаете имена NetBIOS ...

После этого у вас есть в одной строке IP и MAC: адрес, вы можете написать свой скрипт. Некоторые из этих инструментов, возможно, должны быть установлены.

PS> Вы можете узнать свой текущий IP-адрес от

# if you are using a cable connection on the network ineterface eth0
sbin/ifconfig eth0 | grep -E "inet:" | awk '{print $2}' | sed s/"inet:"//g
# or you are using a wireless connection on the network ineterface wlan0
sbin/ifconfig wlan0 | grep -E "inet:" | awk '{print $2}' | sed s/"inet:"//g

PPs> ИМХО, не так приятно и эффективно сканировать весь интернет, чтобы узнать, подключен ли этот конкретный компьютер ... Другое дело, если вы подключаете этот компьютер к локальной сети или к виртуальной частной сети (при меньшем количестве сканируемых IP-адресов это возможно)... :-)

0

Как насчет настройки собственной беспроводной сети ad-hoc на одном из ПК и маршрутизации трафика других компьютеров через него. Безопасный и не нужно для стороннего отслеживания IP ...

-1

Самый простой способ сделать это - с помощью logmein или team viewer. Да, это третье лицо, но это будет работать очень просто.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .