環境
- Docker
- PHP 8.x
gethostbyaddrとは
PHPではgethostbyaddr関数というのがある。指定したIPのリモートホスト名を取得することができる。
gethostbyaddr('66.249.66.1');
これをDocker使ってワンライナーでやりたい。
結論
これでワンライナーで実行できる
$ docker run --rm --dns 8.8.8.8 php:8-cli php -r "echo gethostbyaddr('66.249.66.1');" crawl-66-249-66-1.googlebot.com
ポイントは以下
--rm
: コンテナ実行後に自動的に削除する。不要なコンテナが残らない。--dns 8.8.8.8
: DNSサーバーを指定。必須 これがないとDocker内部のDNSサーバーで解決を試みてしまい、どのIPを入力してもIPアドレスが返ってきてしまう。php:8-cli
: PHP 8.xのCLIイメージを使用。これにより、PHPスクリプトを直接実行できる。php -r "echo gethostbyaddr('66.249.66.1');"
: PHPのgethostbyaddr
関数を実行し、結果を標準出力に表示。
これらのポイントを押さえることで、Docker環境で簡単にgethostbyaddr
関数を利用できる。
より便利に
IPアドレスをいちいち書き換えるのが面倒だったので、bashのfunction機能を使ってコマンド化した
gethostbyaddr() { docker run --rm --dns 8.8.8.8 php:8-cli php -r "echo gethostbyaddr('$1');" }
以下のように引数を渡すと実行できる。
$ gethostbyaddr 66.249.66.1 crawl-66-249-66-1.googlebot.com