くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

inetdとシェルスクリプトでシンプルなwebサービスを作る実験

以前(http://kunst1080.hatenablog.com/entry/2014/01/26/180321)、netcatでwebサーバできないかなーってシェルスクリプト書いたりしていたわけですが、そもそもinetdで指定のポートを通して標準入出力が扱えるってことに気づいたのでやってみたテスト。

前準備

テスト用にJail環境を構築し、ユーザー「test」を作成。
IP・・・192.168.29.21
一般ユーザー・・・test
(Jail環境構築のメモはこちら→http://kunst1080.hatenablog.com/entry/2013/11/18/144826 )

とりあえず繋ぐ

rootで、/etc/inetd.confを編集
http    stream  tcp     nowait          test    /home/test/hoge.sh

※ポート80番へのIOをLISTENしてtestユーザで/home/test/hoge.shに渡す、みたいな感じですかね。

rootで/etc/hosts.allowを編集
ALL : ALL : allow

とりあえず、ね・・・

とりあえず接続まで

メインのスクリプトをかきかき

/home/test/hogesh

#!/bin/sh
echo this is server
echo args is $*
echo pwd = $PWD
touch /home/test/aho
echo -------------------
set
ブラウザで接続してみる

http://192.168.29.21

this is server
args is
pwd = /
-------------------
BLOCKSIZE=K
HOME=/
IFS=' 	
'
MAIL=/var/mail/test
OPTIND=1
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/home/test/bin
PPID=2142
PS1='$ '
PS2='> '
PS4='+ '
PWD=/
RC_PID=2125
inetd_dummy=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
telnetで叩いてみる
% telnet 192.168.29.21 80

Trying 192.168.29.21...
Connected to jail.test.
Escape character is '^]'.
this is server
args is
pwd = /
-------------------
BLOCKSIZE=K
HOME=/
IFS='
'
MAIL=/var/mail/test
OPTIND=1
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/home/test/bin
PPID=2142
PS1='$ '
PS2='> '
PS4='+ '
PWD=/
RC_PID=2125
inetd_dummy=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Connection closed by foreign host.

ひとまず、HTTPの体を成してないんですけども、繋がった。


HTTPっぽいものを返してみる

/home/test/hoge.sh

#!/bin/sh
cat <<++EOS
HTTP/1.0 200 OK
Content-type: text/html

<html>
<head>
<title>test page</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
++EOS
ブラウザからアクセス

http://192.168.29.21

Hello World!
telnetからアクセス
% telnet 192.168.29.21 80
Trying 192.168.29.21...
Connected to 192.168.29.21.
Escape character is '^]'.
HTTP/1.0 200 OK
Content-type: text/html

<html>
<head>
<title>test page</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
Connection closed by foreign host.

なんだかそれらしい感じ!!