Как я могу разрешить IP-адрес в имя хоста в Arch Linux? [дубликат]

Как указывали другие, читатель канала получает EOF, когда не осталось писателей. Таким образом, решение состоит в том, чтобы убедиться, что всегда есть один писатель, который держит его открытым. Этому писателю не нужно ничего посылать, просто держите его открытым.

Поскольку вы используете сценарий оболочки, самое простое решение — указать оболочке открыть канал для записи. А затем закройте его, когда закончите.

#!/bin/sh
mkfifo P
exec 3>P # open file descriptor 3 writing to the pipe
program < P
# < P tail -n +1 -f | program
echo some stuff > P
cat more_stuff.txt > P
exec 3>&- # close file descriptor 3

Обратите внимание, что если вы пропустите последнюю строку, файловый дескриптор 3 будет автоматически закрыт (и, таким образом, считыватель получит EOF) при выходе из скрипта. Помимо удобства, это также обеспечивает своего рода безопасность, если сценарий каким-то образом завершится раньше.

0
17.07.2016, 23:47
2 ответа

Утилита host вернет строку, содержащую разрешенное имя хоста:

$ host 8.8.8.8
8.8.8.8.in-addr.arpa domain name pointer google-public-dns-a.google.com.

Это должно быть довольно легко разобрать в любом сценарии оболочки. Если поиск имени хоста не удался, host завершается с ненулевым статусом выхода:

$ if ! host 8.8.8.1 2>/dev/null; then echo "lookup failed"; fi
lookup failed

Эта утилита является частью пакета bind-tools в Arch Linux.

1
28.01.2020, 02:14

Вы можете использовать либо host, либо nslookup из bind-tools:

$ host 172.217.19.195
195.19.217.172.in-addr.arpa domain name pointer fra02s21-in-f3.1e100.net.


$ nslookup 172.217.19.195
Server:     192.168.2.1
Address:    192.168.2.1#53

Non-authoritative answer:
195.19.217.172.in-addr.arpa name = fra02s21-in-f3.1e100.net.
6
28.01.2020, 02:14

Теги

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