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
ブラウザで接続してみる
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
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.
なんだかそれらしい感じ!!