Posted at

/usr/bin/GET,/usr/bin/HEAD,/usr/bin/POST

More than 3 years have passed since last update.

HTTPの疎通テストでtelnetで80番ポートに繋いで実験しているときに気づいたのですが、いつの間にか/usr/bin/GETというコマンドがインストールされてました。

ディストリビューションはCentOS6.8。

調べるとperl-libwww-perlパッケージに同梱されているコマンドのようで、何かの依存関係でインストールされたのでしょうね。

GETコマンドの他にHEADコマンドとPOSTコマンドが使えます。


/usr/bin/GET

GETコマンドはWebサイトのコンテンツを拾ってくるコマンド。

# GET 'http://yahoo.co.jp'

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="content-style-type" content="text/css">
<meta http-equiv="content-script-type" content="text/javascript">
<meta name="description" content="日本最大級のポータルサイト。検索、オークション、ニュース、メール、コミュニティ、ショッピング、など80以上のサービスを展開。あなたの生活をより豊かにする「ライフ・エンジン」を目指していきます。">
(以下略)

便利ですね。


/usr/bin/HEAD

HEADコマンドは、ヘッダ情報を取得します。

# HEAD 'http://yahoo.co.jp'

200 OK
Cache-Control: private, no-cache, no-store, must-revalidate
Connection: close
Date: Tue, 23 Aug 2016 05:16:27 GMT
Pragma: no-cache
Server: nginx
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8
Expires: -1
Client-Date: Tue, 23 Aug 2016 05:16:27 GMT
Client-Peer: 183.79.75.234:80
Client-Response-Num: 1
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p_jp.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Frame-Options: SAMEORIGIN
X-XRDS-Location: https://open.login.yahooapis.jp/openid20/www.yahoo.co.jp/xrds
X-XSS-Protection: 1; mode=block

curlやwgetよりもシンプルに使えるのでWeb開発でHEADのチェックで使えそうです。


/usr/bin/POST

もう一つのPOSTコマンドは名前の通り、POSTメソッドを投げてくれるコマンドだと思いますが、手っ取り早くPOSTする環境がなかったので未検証です。ゆるくてすいません。


ということで

GETHEADPOSTコマンドは手軽にHTTPメソッドを試せるので色々便利になりそうです。

ところで。

$ GET /

<HTML>
<HEAD>
<TITLE>Directory /</TITLE>
<BASE HREF="file:/">
</HEAD>
<BODY>
<H1>Directory listing of /</H1>
<UL>
<LI><A HREF="./">./</A>
<LI><A HREF="../">../</A>
<LI><A HREF=".autofsck">.autofsck</A>
<LI><A HREF=".autorelabel">.autorelabel</A>
<LI><A HREF="bin/">bin/</A>
<LI><A HREF="boot/">boot/</A>
<LI><A HREF="cgroup/">cgroup/</A>
<LI><A HREF="dev/">dev/</A>
<LI><A HREF="etc/">etc/</A>
<LI><A HREF="home/">home/</A>
<LI><A HREF="lib/">lib/</A>
<LI><A HREF="lib64/">lib64/</A>
<LI><A HREF="lost%2Bfound/">lost+found/</A>
<LI><A HREF="media/">media/</A>
<LI><A HREF="mnt/">mnt/</A>
<LI><A HREF="opt/">opt/</A>
<LI><A HREF="proc/">proc/</A>
<LI><A HREF="root/">root/</A>
<LI><A HREF="sbin/">sbin/</A>
<LI><A HREF="selinux/">selinux/</A>
<LI><A HREF="srv/">srv/</A>
<LI><A HREF="sys/">sys/</A>
<LI><A HREF="tmp/">tmp/</A>
<LI><A HREF="usr/">usr/</A>
<LI><A HREF="vagrant/">vagrant/</A>
<LI><A HREF="var/">var/</A>
</UL>
</BODY>
</HTML>

おっ、ファイルシステムをHTMLフォーマットで返すのか…。しかし、パーミッションで見れないファイルは拾えないので安心かも。