2017-11-18 3 views
0

私はこの小さなコードを持っています。何らかの理由で、http://localhost/cgi-bin/sysinfo.shから実行すると実行できません。私はCentOS 7のVMを使っています。私が得ることができるすべての助けを借ります。私はこれらのindenionsを右に得るように見えることはできませんが、彼らはViで正しいです。CGIスクリプトによるサーバーエラーまたは空白ページ

#!/bin/bash 
echo -e "Content-type: text/html\r\n\n" 
echo " 
<html> 
<head> 
    <title>Bash as CGI</title> 
</head> 
<body> 
<h3>General system information for host $(hostname -s).    </h3> 
<h4>Memory Info</h4> 
<pre> $(free -m) </pre> 
<h4>Disk Info:</h4> 
<pre> $(df -h) </pre> 
<h4>Logged in user</h4> 
<pre> $(w) </pre> 
<hr> 
Information generated on $(date) 
</body> 
</html> 

シェルスクリプトとして実行すると、htmlタグがすべてコマンドの出力とともに表示されます。

コンテンツタイプ:text/htmlの

<html> 
<head> 
    <title>Bash as CGI</title> 
</head> 
<body> 
<h3>General system information for host localhost</h3> 
<h4>Memory Info</h4> 
<pre>    total  used  free  shared 
buff/cache available 
Mem:   1775   994   137   20   643   
540 
Swap:   2047   0  2047 </pre> 
<h4>Disk Info:</h4> 
<pre> Filesystem    Size Used Avail Use% Mounted on 
/dev/mapper/centos-root 47G 9.7G 38G 21%/
devtmpfs     873M  0 873M 0% /dev 
tmpfs     888M 4.2M 884M 1% /dev/shm 
tmpfs     888M 9.1M 879M 2% /run 
tmpfs     888M  0 888M 0% /sys/fs/cgroup 
/dev/sda1    1014M 235M 780M 24% /boot 
tmpfs     178M 4.0K 178M 1% /run/user/42 
tmpfs     178M 44K 178M 1% /run/user/0 </pre> 
<h4>Logged in user</h4> 
<pre> 21:33:21 up 2:01, 3 users, load average: 0.06, 0.04, 0.05 
USER  TTY  FROM    [email protected] IDLE JCPU PCPU WHAT 
root  pts/0 :0    20:45 1.00s 0.14s 0.00s w 
root  :0  :0    20:45 ?xdm? 1:11 0.11s 
/usr/libexec/gnome-session-binary --session gnome-classic </pre> 
<hr> 
Information generated on Sat Nov 18 21:33:21 EST 2017 
</body> 
</html> 
+0

ウェブがサーブされ、どのようにあなたが' .sh'スクリプトを実行するように設定したのは何? – janos

+0

あなたのファイルが閉じ、二重が含まれています引用 –

+0

?「を実行することはできません」(あなたが貼り付けられたものではありません)あなたの問題の非常に便利な説明ではありません。まさに予期しない動作が、あなたが見ている?Webサーバーのエラーログに書き込まれますか? –

答えて

2

コンテンツが投稿コードで終了"が欠落している印刷しechoコマンド。 いずれの場合でも、 は、HTMLコンテンツでは二重引用符が非常に一般的です。このような印刷方法は後で頭痛を引き起こす可能性があります。

#!/bin/bash 

cat <<EOF 
Content-type: text/html 

... (HTML content here) 

EOF 

も注意してくださいそれは、これを実行できるようにする、 ファイルが実行可能でなければなりません(chmod +x script.sh)、 とウェブサーバが実行するように構成する必要があります。 ヒアドキュメントを使用する方が簡単になりますスクリプト、 の内容を印刷するのではなく、一般的なデフォルトです。

0

なぜecho ???!

印刷 "Content-type:text/html \ n \ n";

印刷「何とか何とか」を、第二の記憶 "あなたはそれを持っていけない。

関連する問題