У меня есть команда AWK для извлечения информации из точек монтирования (см принятого ответа в How to extract NFS information from mount on Linux and Solaris?):Как включить поиск в awk?
awk -F'[: ]' '{if(/^\//)print $3,$4,$1;else print $1,$2,$4}
Я хотел бы, чтобы включить поиск копаться в этой awk
команды для запроса IP имен хостов. К сожалению, команда mount иногда включает IP, а иногда и имя хоста. Я попытался следующие, но она имеет нежелательную строку, нежелательный код возврата и не работает, если есть IP-адрес:
Для хостов
echo "example.com:/remote/export on /local/mountpoint otherstuff" | awk -F'[: ]' '{if(/^\//)print system("dig +short " $3),$4,$1;else print system("dig +short " $1),$2,$4}'
Возвращает
93.184.216.119
0 /remote/export /local/mountpoint
Для IP-адресов
echo "93.184.216.119:/remote/export on /local/mountpoint otherstuff" | awk -F'[: ]' '{if(/^\//)print system("dig +short " $3),$4,$1;else print system("dig +short " $1),$2,$4}'
Возвращает
0 /remote/export /local/mountpoint
Я хотел бы получить следующие в обоих случаях
93.184.216.119 /remote/export /local/mountpoint
Update:
, кажется, что некоторые версии возвращении IP, когда IP предоставляется как запрос, а другие ничего не возвращают.
Решение:
На основе accepted answer я использовал следующую адаптированную awk
команду:
awk -F'[: ]' '{if(/^\//) { system("dig +short "$3" | grep . || echo "$3" | tr -d \"\n\""); print "",$4,$1 } else { system("dig +short "$1" | grep . || echo "$1" | tr -d \"\n\"");print "",$2,$4 };}'
Дополнительный grep . || echo "$3"
Заботится о том, что ввод IP/имя хоста возвращается, если рыть ничего не возвращает.