Я использую только dhcpcd и хочу добавить в /etc/resolv.conf поиск domain.local

Используйте findиshell (POSIX sh/bash/Korn/zsh) parameter substitution expansionследующим образом.

find. -type f -name "F3.bam" -execdir sh -c '
    trgt="${PWD%/*/*}"; echo cp -v "$1" "${trgt}/${trgt##*/}_${1#./}" ' _ '{}' \;

Пояснения::

Мы ищем файлы, соответствующие только F3.bamи с -execdirздесь, findизменяет текущий каталог на каталог, в котором найден файл F3.bam, затем выполняем sh -c '... 'внутри самого этого каталога.

С помощью trgt="${PWD%/*/*}"«сокращать -до -до -первого -суффикса» :Мы избавляемся от имени файла и двух уровней его под-каталоги в/samples/mydata1/RUN1/ID_date**/PCR2/TIME1**(полужирный часть, которая соответствует суффиксу /*/*, удалит )и присвоит переменной trgt. Итак, для первого файла trgtтеперь установлено значение /samples/mydata1/RUN1/ID_date.

"$1"является относительным путем./filenameк текущему $PWD.

В ${trgt##*/}_"сокращать -до -до -последнего префикса -" :Мы использовали значение переменной trgt, чтобы получить имя подкаталога -, которое должно предшествовать -. ] зависит от имени файла, так что это вернет только ID_date, ID2_date4или IDxxx_datexxxи т. д. (, удалив все до последней косой черты /, увиденной ), и добавит подчеркивание _.

Этот ${1#./}удаляет точку -косую черту ./из относительного ./filepath.

2
17.12.2019, 00:44
2 ответа

Если я правильно понял (, наконец, ), значит, вы настроили свою сеть с помощью dhcpcd.conf (, а не dhcpd.conf)

Я предполагаю, что эта конфигурация принимает форму, подобную этой:

interface eth0
static ip_address=192.168.2.31/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1 8.8.8.8 4.2.2.1

Чтобы установить домен и домен поиска, вы должны просто добавить что-то вроде этого:

static domain_name=example.com
static domain_search=example.com

Другими словами, вам просто нужно установить domain_searchкак статическую опцию.

Для справки см. здесьhttp://www.techsneeze.com/configuring-static-ip-raspberry-pi-running-raspbian/


Как отмечается в ФП, эта опция очень хорошо скрыта. Это предполагается, потому что dhcpcd — это инструмент настройки сети, основанный на концепциях DHCP. В dhcpcd вы устанавливаете статическую конфигурацию, определяя (части )ответа DHCP. Таким образом, в этой ситуации ответ состоит в том, чтобы просто добавить domain_searchк статически определенным значениям.

Причина того, что это плохо документировано, может быть связана с тем фактом, что DHCP позволяет добавлять пользовательские параметры DHCP. Поэтому dhcpcd не может перечислить все опции, которые вы могли бы определить статически. Как оказалось, domain_searchне является частью основного стандарта DHCP, он закреплен RFC 3397 .

Это сказано. Лучше бы это было описано в инструкции.

4
28.04.2021, 23:26

Я не знаю, как получить ответ с помощью nslookup. НО для программы, которая использует файл nsswitch.conf, чтобы сообщить ей, как решать проблемы, вы можете сделать это, ЕСЛИ целью вашего запроса является запуск avahi (или любой нулевой _conf, также известный как демон mDNS ). Getent cmd является такой утилитой. Например, в моей локальной сети есть компьютер с именем «тень»

.
`getent hosts shadow`

ничего не возвращает.

но getent hosts shadow.localвозвращается:

192.168.1.76 shadow.local

avahi-resolve -n shadowвозвращает

Failed to create host name resolver: Invalid host name

avahi -разрешение -n shadow.local возвращает:

shadow.local 192.168.1.76

Хотя я никогда и нигде не определял домен как "локальный".

Чтобы это работало, цель должна находиться в строке -, чтобы она могла отвечать на опросы mDNS. Например, если host hector не в сети:

avahi-resolve -n hector.local

Failed to resolve host name 'hector.local': Timeout reached

getent hosts hector.local

время истекло без возврата

КЛЮЧ должен иметь следующую строку в вашем файле /etc/nsswitch.conf:

hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname

Это приведет к тому, что cmd-подобный getent сначала проверит файл /etc/hosts и, если хост не будет найден там, попытается использовать средство mDNS.

Я думаю, что установка и запуск avahi автоматически добавляет нужные библиотеки в путь (s ), который проверяет getent, так что когда getent видит mdns4 _минимальный в файле nsswitch.conf, он знает, что делать.

Вышеупомянутое является чем-то вроде (неудовлетворительного )хака. Мне было бы очень интересно узнать, как заставить dhcpd делать то, что вы хотите. pgmer6809

1
28.04.2021, 23:26

Теги

Похожие вопросы