マウント ポイントから情報を抽出する awk コマンドがあります ( Linux および Solaris のマウントから NFS 情報を抽出する方法で受け入れられている回答を参照してください)。
awk -F'[: ]' '{if(/^\//)print $3,$4,$1;else print $1,$2,$4}
awk
ホスト名の IP を検索するために、このコマンドに dig ルックアップを含めたいと思います。残念ながら、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
アップデート:
dig
IP がクエリとして提供されたときに IPを返すバージョンと、何も返さないバージョンがあるようです。
解決:
受け入れられた回答に基づいて、次の適応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"
は、dig が何も返さない場合に入力 IP/ホスト名が返されるように注意します。