以前(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を編集
とりあえず、ね・・・
とりあえず接続まで
メインのスクリプトをかきかき
/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
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 '^]'.
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.
|
なんだかそれらしい感じ!!