Это решение будет работать через файлы с сумасшедшими символами в их именах и позволит избежать подоболочки.
Но если bash 4 не вариант, вы можете воссоздать это решение, используя [114566]find -exec +[114567]:
Однако, это зависит от ARG_MAX вашей системы (в отличие от вышеприведенного), так что если количество файлов очень велико, вы все равно можете получить несколько запусков через подмножества файлов.[114227].
Я не могу предоставить это в комментарии, но хочу, чтобы вы увидели рабочий файл hosts
(из моя рабочая установка Gentoo):
# /etc/hosts: Local Host Database
#
# This file describes a number of aliases-to-address mappings for the for
# local hosts that share this file.
#
# In the presence of the domain name service or NIS, this file may not be
# consulted at all; see /etc/host.conf for the resolution order.
#
# IPv4 and IPv6 localhost aliases
127.0.0.1 bedroom-gentoo.myISP.net bedroom-gentoo localhost
::1 bedroom-gentoo.myISP.net bedroom-gentoo localhost
#
# Imaginary network.
#10.0.0.2 myname
#10.0.0.3 myfriend
#
# According to RFC 1918, you can use the following IP networks for private
# nets which will never be connected to the Internet:
#
# 10.0.0.0 - 10.255.255.255
# 172.16.0.0 - 172.31.255.255
# 192.168.0.0 - 192.168.255.255
#
# In case you want to be able to connect directly to the Internet (i.e. not
# behind a NAT, ADSL router, etc...), you need real official assigned
# numbers. Do not try to invent your own network numbers but instead get one
# from your network provider (if any) or from your regional registry (ARIN,
# APNIC, LACNIC, RIPE NCC, or AfriNIC.)
#
Обратите внимание, что адрес localhost
для 127.0.0.1
может разрешаться в несколько имен.
Также обратите внимание, что я не делаю различий между IPv4 и IPv6
Этот формат устраняет необходимость в обходном пути для 127.0.1.1
. Поскольку я не хочу, чтобы моя машина была видна другим пользователям в моей сети, я оставил раздел воображаемой сети в комментариях, но если бы я хотел это сделать, я бы добавил (при условии, что у меня есть ваши устройства):
#
# Real Network
192.168.1.14 raspberrypi.myISP.net raspberrypi
192.168.1.x D-WHALEY2.myISP.net D-WHALEY2
192.168.1.xx LAPTOP.myISP.net LAPTOP
# Imaginary Network
#10.0.0.2 myname
#10.0.0.3 myfriend
#
Чтобы эта работа работала каждый раз я должен войти в свой маршрутизатор и назначить его с помощью фильтрации MAC и удалить 127.0.1.1 из файла Raspian hosts
. Это нужно сделать только один раз: (MAC-адрес преобразуется в статический IP-адрес)
Это гарантирует, что каждый раз, когда устройство в сети запускается, ему назначается адрес, соответствующий вашему файлу hosts
.Это также устраняет необходимость для компьютеров Windows разрешать внутренние адреса.
Windows не может разрешить адрес вашего Pi по 2 причинам:
127.0.1.1
не является допустимым внутренним адресом, согласно RFC 1918 , заменено на RFC 6761 . См. Также комментарии в файле hosts
. 127.0.1.1
, он обрабатывает его как другой адрес localhost (см. Кто выбрал 127.0.0.1 в качестве localhost и почему? Что это значит? ), почему. Такое поведение приводит к ошибкам, описанным OP. Короче говоря, это проблема Windows и «особенность» дистрибутивов на основе Debian. Удаление этой «функции» и настройка маршрутизатора для «устранения» проблемы в Windows должны позволить Samba подключиться
Это может указать вам правильное направление, но не решит проблему. Демоны DHCP и DNS на маршрутизаторах могут все испортить. В моем случае у меня была такая же проблема с opensuse и raspberypi. Вот все шаги, которые я сделал:
mymacnine
попробовал также mycmachine.domain
Ни то, ни другое не сработало. Кто-то указал, что ваше имя NetBIOS закомментировано.
Если вы скажете "ping raspberrypi", он не использует тот же способ поиска имени, что и ваши машины с Windows ... вероятно . Это,Протоколы SMB / CIFS имеют три способа поиска имен, но два других действительно используются только в том случае, если вы настраиваете домен, чего вы не делаете.
Это означает, что вам нужно выполнять поиск имен по протоколу NMB. Samba по умолчанию использует имя хоста локальной машины (вывод команды hostname
) в качестве имени NMB. Попробуйте запустить это и убедитесь, что это именно то имя хоста, которое вы ожидали. Если это не так, поиграйте с / etc / hosts
, пока он не появится. Возможно, вам также придется исправить / etc / hostname (но обратите внимание, что изменения в последнем файле не выполняются при запуске сценария инициализации hostname
или перезагрузке).
Инструмент самбы для поиска NMB, что неудивительно, называется nmblookup
. Запустите это на raspberry pi с выводом hostname
в качестве аргумента и убедитесь, что он совпадает с IP-адресом raspberry pi. Если это не так, опубликуйте результат. Если это так, но IP-адресу предшествует шестнадцатеричное число в угловых скобках (<>), это нормально (шестнадцатеричное число - это тип результата; существует много возможных типов результатов).
Протокол NMB довольно ужасен, отчасти потому, что он хочет выбрать хост «главного браузера», что не всегда работает правильно. Попробуйте запустить nmblookup -M - -
(то есть nmblookup
dash-capital m-space-dash-dash-space-dash. Да, это некрасиво). Это приведет к поиску основного браузера. Обратите внимание на возвращаемый IP-адрес. Запустите smbclient -L ip
, где ip - это IP-адрес. Убедитесь, что ваш Raspberry Pi указан в списке.Если это не так, вы можете попробовать дать raspberry pi больше шансов на победу в выборах главного браузера, указав предпочтительный мастер = yes
в вашем smb.conf
. Однако, если вы используете домен, не делайте этого (мастер домена должен быть главным браузером, иначе вход в домен не удастся).
Если вы используете Windows 7 или более позднюю версию, присоединенную к домену, то по умолчанию Windows больше не будет выполнять поиск NMB. В этом случае вам может потребоваться установить некоторые ключи реестра, чтобы изменить эти значения по умолчанию (эти ключи можно найти на вики-странице samba). В качестве альтернативы вы можете присоединить raspberry pi к домену Windows, что устранит необходимость в NMB.