以前(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を編集
1
2
http    stream  tcp     nowait          test    /home/test/hoge.sh

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

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

とりあえず、ね・・・

とりあえず接続まで

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

/home/test/hogesh

1
2
3
4
5
6
7
8
#!/bin/sh
echo this is server
echo args is $*
echo pwd = $PWD
touch /home/test/aho
echo -------------------
set

ブラウザで接続してみる

http://192.168.29.21

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
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で叩いてみる
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
% 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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#!/bin/sh
cat <<++EOS
HTTP/1.0 200 OK
Content-type: text/html



<title>test page</title>


<h1>Hello World!</h1>


++EOS

ブラウザからアクセス

http://192.168.29.21

1
2
Hello World!

telnetからアクセス
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
% telnet 192.168.29.21 80
Trying 192.168.29.21...
Connected to 192.168.29.21.
Escape character is &#39;^]&#39;.
HTTP/1.0 200 OK
Content-type: text/html

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

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