mumumuの日記: basic expression(2) 2
echo -e "GET / HTTP/1.0\n" | nc xxx.xxx.xxx.xx.jp 80
----
HTTPサーバの生存テストに使うこの基本語彙。好きな
人のサーバをつんつんするのに使えます(謎
とはいえ、
wget http://xxx.xxx.xxx.xx.jp/
でもよい気がするし、ブラウザから直接上記のURIを投
げてもいいのかもしれない。だが、以下のように生の
応答を1コマンドで得られるところが、お手軽な生存
テストたる所以なのだろう。telnetを使うと2回コマン
ドを打たねばならないからだ。
HTTP/1.1 200 OK
Date: Sun, 11 Jul 2004 09:20:34 GMT
Server: Apache/2.0.50
Last-Modified: Sun, 11 Jul 2004 09:19:50 GMT
ETag: "75301-0-bd057980"
Accept-Ranges: bytes
Content-Length: 0
Connection: close
Content-Type: text/html (以下略)
しかしこのncコマンドはただコネクションを開いて繋ぐ
なり、listenするだけのコマンドなので、proxyを通さ
ないといけない場合は使えないという欠点もある。その
場合はおとなしくwgetすることになるのだろう。この場
合はhttp_proxy環境変数を定義するか、~/.wgetrcに書い
ておく必要がある。
wget --proxy-user=mumumu --proxy-passwd=xxxxxx http
://xxx.xxx.xxx.xx.jp/
まあこうするくらいなら、おとなしくブラウザでアクセス
した方が早かろうて、、(´ー`;) wgetのマニュアルも
参照のこと。
----
また、ncコマンドはBSD由来のものであり、デフォルト
ではfedoraやRedHatにはインストールされない。よって、
「yum install nc」とする必要があることにも注意すべ
きだろう。
[ Update July 12th 0:45 JST by m ]
やまきゅさめからbash限定ながら、以下のexpressionを教わり
ました。
(echo GET / HTTP/1.1; echo Host: slashdot.jp; echo ; cat <&1 >&2) >/dev/tcp/srad.jp/80
これはbashの「/dev/tcp/host/port」というステートメントが
hostのport番号に対する接続を行うことを利用したもの。ひとつ
ひとつ解釈すると、、
Get / HTTP/1.1
Host: slashdot.jp
(空行)
を/dev/tcp/srad.jp/80というTCP接続に出力すると同時
に、標準エラー出力を参照していることになる。
#ファイルディスクリプタは未だに私にとって鬼門でありま
#っす(´ー`;)
でぶてーしーぺー (スコア:1)
-- Takehiro TOMINAGA // may the source be with you!
Re:でぶてーしーぺー (スコア:1)
umq [srad.jp]さめから、ttさめのコメントと同じネタを教わり、ファイル
ディスクリプタとコマンドの実行手順をめぐって格闘しており
ました(´ー`;)
シェルとは難しいものですなとしみじみ。
#最終的にはman bashですね(´ー`;)
# 無精、短気、傲慢、これ最強