X



shスクリプトでcgi
0001nobodyさん
垢版 |
03/03/20 01:27ID:zBrN4BPB
Perl vs. PHP vs. Rubyと言われているこの時代に
shスクリプトでcgiを書いている奴っていますか。
周りからは生きた化石と言われながら、頑固一徹
shスクリプトのcgiの可能性にかけている。
そんなcgi職人、集まれ!
0002nobodyさん
垢版 |
03/03/20 02:17ID:???
Cでcgiを書いてますが何か?
↓C++で書いてるヤシ
0003nobodyさん
垢版 |
03/03/20 02:58ID:???
低パワーマシンで perl や python では重すぎる
CGI でシェルスクリプト使ったりします。
0005nobodyさん
垢版 |
03/03/20 08:00ID:0FfyPGzB
#!/bin/sh
echo "Coutent-type:text/html;charse:Shift_JIS\r\n\r\n逝ってよし"
0006nobodyさん
垢版 |
03/03/20 13:39ID:???
かけないこともないが
perlで重くてシェルスクリプトで軽いってことは
そんなにないだろう?
もしそうなのならマシンを見直す必要があると思うが・・・

WinのバッチファイルでCGI組んでるやつの方が
まだネタになるぞ
0007nobodyさん
垢版 |
03/03/20 23:27ID:???
> WinのバッチファイルでCGI
すごい穴になりそうだな
0008nobodyさん
垢版 |
03/03/21 00:42ID:dpOkqofd
shスリプトでここまでできたという事例が聞ければうれしっす。
/bin/sh
0009nobodyさん
垢版 |
03/03/21 00:46ID:???
>>7
つぅか標準入力を扱えない時点でCGI失格だと思われ。
0010nobodyさん
垢版 |
03/03/21 07:21ID:???
C++ with MFC で家庭内LAN用のCGI作ろうとしてますが、何か?

# CStringマンセー
0011nobodyさん
垢版 |
03/03/21 09:19ID:???
機会があればschemeで作ろうとしてるんですけど割と神ですか?
0012nobodyさん
垢版 |
03/03/21 09:33ID:???
どこかで404とかのドキュメントを
ブラウザの環境変数であれこれする
shスクリプト見たような気がする
0013nobodyさん
垢版 |
03/03/21 17:27ID:???
shbbs.cgi (1/2)
#! /bin/sh

if [ $REQUEST_METHOD = "POST" ]
then
cp log.txt dummy.txt
printf "`cat -| awk -f filt.awk`" | sed -f filt.sed >> dummy.txt
printf "<br>\n" >> dummy.txt
tail -30 dummy.txt > log.txt
fi

cat <<END_OF_HEADER
Content-type: text/html; charset=EUC-JP

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html lang="ja">
<head>
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="content-type" content="text/html; charset=EUC-JP">
<title>/bin/sh BBS</title>
</head>

<body onLoad="LoadCookie()">
<script type="text/javascript"><!--
function SaveCookie(val){
document.cookie = "handle_name="+escape(val)+"; path=/;";
}
0014nobodyさん
垢版 |
03/03/21 17:29ID:???
sshbbs.cgi (2/3)

function LoadCookie(){
var cookies = document.cookie.split(";"), value = "";
for(var i = 0; i < cookies.length; i++){
var piece = cookies[i].split("=");
if (piece[0].replace(" ","") == "handle_name"){
if (piece[1] != null){
document.forms[0].name.value =
unescape(piece[1]);
}
break;
}
}
}
--></script>

<h1 align="center">/bin/sh BBS</h1>
<hr>
<dl>
<dd>
END_OF_HEADER

cat log.txt
0015nobodyさん
垢版 |
03/03/21 17:29ID:???
snbbs.cgi (3/3)

cat <<END_OF_FOOTER
</dd>
</dl>
<hr>
<a name="form">post form</a>
<form method="POST" action="shbbs.cgi#form" onSubmit="SaveCookie(this.name.value)">
name: <input name="name" size="19"> message: <input name="message" size="80"> <input type="submit" value="Write">
</form>
<div align="right"><a href="shbbs.cgi#form">Reload</a></div>
<hr>
<div align="right">/bin/sh BBS ver 1.0</div>
</body>
</html>
END_OF_FOOTER
0016nobodyさん
垢版 |
03/03/21 17:30ID:???
filt.awk(1/3)

BEGIN {
FS="="
RS="&"
}

{
key = "0123456789ABCDEFabcdef"
str = ""
i = 1
while(i <= length($2)){
d = substr($2, i, 1)
i++
if (d == "%"){
oct = 0
for(j = 0; j < 2; j++){
oct *= 16
d = substr($2, i, 1)
i++
for(k = 1; k < length(key); k++){
if (d == substr(key, k, 1)){
if (k > 16) k -= 6
oct += k-1
break
}
}
}
0017nobodyさん
垢版 |
03/03/21 17:31ID:???
filt.awk (2/3)

# if (oct > 127) oct = 32
if (oct < 32) oct = 32
col = 64
dec = ""
while(col > 0){
d = int(oct/col)
dec = (dec d)
oct -= d*col
col = int(col/8)
}
str = (str "\\" dec)
} else {
if (d == "+") d = " "
str = (str d)
}
}
$2 = str
}
0018nobodyさん
垢版 |
03/03/21 17:32ID:???
filt.awk (3/3)

$1 == "name" {
name = $2
}

$1 == "message" {
message = $2
}

END {
RS = "\n"
"date +'%y/%m/%d %T'" | getline time
print ("[" time ": " name "] " message)
}
0019nobodyさん
垢版 |
03/03/21 17:32ID:???
filt.sed (1/1)

s/&/\&/g
s/</\</g
s/>/\>/g
s/"/\"/g
0020nobodyさん
垢版 |
03/03/21 17:34ID:???
>>13-19
で、一行BBSできます。
log.txt,dummy.txtを作っといてね。
# 動作無保証。
0021nobodyさん
垢版 |
03/03/21 17:39ID:???
>>19
s/&/\&amp;/g
s/</\&lt;/g
s/>/\&gt;/g
s/"/\&quot;/g

うう。
0022nobodyさん
垢版 |
03/03/21 18:02ID:???
うえーん!ソースコピペ荒らし反対!!!
0024nobodyさん
垢版 |
03/03/22 12:41ID:Ve1PHIbC
>>23さん
どんまい。shだけでも結構なことができるんですね。

おかわり!
0025nobodyさん
垢版 |
03/03/22 19:29ID:???
>>24
私の技量ではあれが限界。
awkなんて初めて使ったよ。
レスを投稿する


ニューススポーツなんでも実況