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は、回答に必要なすべてを出力します。
私たちはとても幸せです:)
Source: https://habr.com/ru/post/J52218/
All Articles