Как запросить свое полное доменное имя в соответствии с POSIX 2018

Некоторое время назад у меня была такая же проблема.

Добавление /bin/bash помогло мне.

Пример:

0****/bin/bash /путь _к _вашему каталогу _script/script.sh > /output _

Причина :При запуске сценария оболочки вы должны определить, где должен выполняться сценарий,поэтому, вероятно, вам нужно использовать /bin/sh, /bin/zsh или что-то еще, чтобы запустить скрипт внутри.

Cron сам не знает, где запустить скрипт.

Также проверьте /var/log/syslog и /var/mail/root, чтобы узнать причину.

0
11.03.2020, 23:25
2 ответа

Со страницы руководства Solaris:

DESCRIPTION
 These functions are used to obtain entries describing hosts.
 An  entry  can come from any of the sources for hosts speci-
 fied in the /etc/nsswitch.conf file.  See  nsswitch.conf(4).
 These      functions     have     been     superseded     by
 getipnodebyname(3SOCKET),   getipnodebyaddr(3SOCKET),    and
 getaddrinfo(3SOCKET),  which  provide greater portability to
 applications when multithreading is performed  or  technolo-
 gies  such  as  IPv6  are  used.  For example, the functions
 described in the following cannot be used with  applications
 targeted to work with IPv6.

Как видите, функция getaddrinfo()также входит в стандарт POSIX и поддерживается...

1
28.04.2021, 23:20

Текущий совместимый с POSIX -способ (попытаться )определить «каноническое» полное доменное имя текущего хоста состоит в вызовеgethostname()для определения настроенного имени хоста, а затемgetaddrinfo()для определения соответствующей адресной информации..

Игнорирование ошибок:

char buf[256];
struct addrinfo *res, *cur;
struct addrinfo hints = {0};
hints.ai_family = AF_UNSPEC;
hints.ai_flags = AI_CANONNAME;
hints.ai_socktype = SOCK_DGRAM;

gethostname(buf, sizeof(buf));
getaddrinfo(buf, 0, &hints, &res);
for (cur = res; cur; cur = cur->ai_next) {
    printf("Host name: %s\n", cur->ai_canonname);
}

Результаты сильно зависят от конфигурации системы и преобразователя.

0
28.04.2021, 23:20

Теги

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