执行从HTTP调用的BASH Linux脚本

时间:2014-12-23 21:58:32

标签: html linux bash cgi

我是HTML的新手,我可以通过调用以下脚本在Web浏览器上打印一个简单的linux date命令。但是,我试图在网络浏览器上显示变量v的内容,但我无法做到。我究竟做错了什么?我从命令行运行批处理文件时工作正常,换句话说没有错误。

#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "<html>"
echo "<head>"
echo "Today is $(date)"

v=`ssh -t -q jcrm16 ". ~/.profile;/opt/reuters/scripts/matt/adsuserlist"`
printf "$v"
# echo $(printf "$v")     << tried this did not work
echo "</body>"
echo "</html>"

2 个答案:

答案 0 :(得分:1)

不是将ssh命令的输出放在变量中然后显示该变量的值,而是直接显示ssh的输出更好:

#!/bin/bash

cat <<EOF
Content-type: text/html

<html>
<head></head>
<body>
Today is $(date)
EOF

ssh -t -q jcrm16 ". ~/.profile;/opt/reuters/scripts/matt/adsuserlist"

echo "</body>"
echo "</html>"

但这并没有改变这样一个事实:使用ssh是一个可怕的糟糕想法,你不应该这样做。

在任何情况下,您的原始脚本都应该有效。很可能它不起作用,因为ssh本身在您的Web服务器进程使用时不起作用。 无论哪种方式,都要使用其他内容进行测试,而不是ssh

答案 1 :(得分:0)

您需要关闭<head>块,并打开<body>块,如下:

#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "<html>"
echo "<head></head>"
echo "<body>"
echo "Today is $(date)"

v=`ssh -t -q jcrm16 ". ~/.profile;/opt/reuters/scripts/matt/adsuserlist"`
printf "$v"
# echo $(printf "$v")     << tried this did not work
echo "</body>"
echo "</html>"