bash + inetd上のWebサーバー

外部からのhttpリクエストに応答し、何らかの方法で処理する必要がありました(エクスプレス決済端末に接続されています)。 最初の解決策はNginx + FastCGI(PHP)で、これはやや不当に重いものでした。 そして、ここで古い思い出が私を訪問し、LJとGoogleのru_rootのおかげで、次のことが行われました。



[root@mysql-02 /etc]# cat services | grep freecashpayment

freecashpayment 433/tcp

freecashpayment 433/udp






これにより、ポート433にfreecashpaymentというサービスがあることをサーバーに説明しました。



[root@mysql-02 /etc]# cat inetd.conf | grep freecashpayment

freecashpayment stream tcp nowait root /usr/home/firefly/freecashpayment.sh freecashpayment.sh






したがって、ポート433をリッスンし、スクリプトfreecashpayment.shでそれに応答することを強制します。



[root@mysql-02 /usr/home/firefly]# cat freecashpayment.sh

#!/usr/local/bin/bash

read request

while /usr/bin/true; do

read header

[ "$header" == $'\r' ] && break;

done

url="${request#GET }"

url="${url% HTTP/*}"

echo $url








その結果、変数$ urlのスクリプトには、GETリクエストで送信されたすべてのパラメーターがあります。 echoは、回答に必要なすべてを出力します。



私たちはとても幸せです:)



All Articles