Бонжур, примите файл!

На «Маке» есть «Бонжур» — протокол, позволяющий регистрировать сервисы и смотреть какие сервисы зарегистрированы в локальной сети. Удобная штука, через неё «Айтюнс» делится музыкой с соседями по локалке, через неё работает «Эйрдроп» — служба для быстрого обмена файлами на «Маке».

В общем, пришла мне в голову идея — нельзя ли как-то сделать подобие «Эйрдропа» на bash. Попробовал — получилась утилита «bonfile», состоящая из двух частей и использующая «Бонжур» для анонса и поиска.

Если её запустить без параметров, то она ждёт анонса специальной службы и, если находит, коннектится на указанный IP по порту 1111 и выдаёт переданный файл на экран. Если запустить с параметром, ожидается, что это имя файла для передачи, далее анонсируется служба, ожидается соединение на порт 1111 и туда выдаётся файл.

При передаче контролируется контрольная сумма (md5), а файл сжимается утилитой gzip. Для анонса и получения анонсированных служб используется утилита dns-sd, для передачи файла — netcat.

bash bonfile.sh > somefile # запуск клиента (ожидаем приём файла)
# или
bash bonfile.sh somefile # запуск сервера (ожидаем подключения клиента)
Поделиться
Отправить
7 комментариев
Lex Rivera (lex.io)

«Bonjour» — не протокол. Это технология. Протокол — Zeroconf, который кстати помимо Mac OS X есть еще в Linux, BSD и Solaris. В общем почти во всех никсах (там софт Avahi называется)
А идея интересная.

Евгений Степанищев (bolknote.ru)

Комментарий для lex.io:

Bonjour is Apple Inc.’s trade name for its implementation of Zero configuration networking (Zeroconf)

Говорит нам Википедия: http://en.wikipedia.org/wiki/Bonjour_%28software%29
Зероконф — протокол, Бонжур — его реализация, отсюда: Бонжур — протокол.

Вот из русской Википедии ( http://ru.wikipedia.org/wiki/Bonjour ):

Bonjour (ранее: Rendezvous) — технология (и одноимённый программный модуль) Apple, применяемая, в частности, в Zeroconf, и представляющая собою протокол автоматического обнаружения сервисов (служб)

silent

В лапках только русское, так что «Бонфайл»!

Евгений Степанищев (bolknote.ru)

Комментарий для silent:

Нет, в лапках не только русское, с чего бы.

Denis Ibaev (dionys.myopenid.com)

Комментарий для Евгения Степанищева:

Кавычки служат для смыслового выделения названия, в случае латиницы, это не обязательно, она и так выделяется. (Особенно если ещё и курсивом её писать, как это так же принято.)

Евгений Степанищев (bolknote.ru)

Комментарий для dionys.myopenid.com:

Именно не обязательно, т. е. это допускается.

Denis Ibaev (dionys.myopenid.com)

Комментарий для Евгения Степанищева:

«Не обязательно» относилось к смысловому выделению, а не к простановке кавычек. А так, конечно, допускается, типографика достаточно гибкая.

Популярное