【发布时间】:2015-10-07 16:18:10
【问题描述】:
我一直在谷歌上搜索这个,但似乎没有多少人写 bash cgi...
所以我有一个在浏览器上运行并接受用户输入的小 cgi bash 脚本,它应该远程 ssh 到远程服务器并获取其正常运行时间并将其存储在一个临时文件中。
ssh 密钥交换已经完成,我可以在没有密码的情况下 ssh 到盒子上。 我知道该变量正在传递脚本,因为它确实回显了用户输入的内容。 而且我知道它会尝试使用 ssh 对远程主机执行某些操作,因为当我单击提交时页面会加载一段时间。
但是,当我查看临时文件时,什么都没有,所以 ssh 以某种方式失败但没有留下任何错误。
任何人都有通过 CGI bash 使用远程 ssh 的经验?
#!/bin/bash
echo "Content-type: text/html"
echo '<html>'
echo '<head>'
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'
echo '</head>'
echo '<body>'
echo "<form method=GET action=\"${SCRIPT}\">"\
'<table nowrap>'\
'<tr><td>Input</TD><TD><input type="text" name="name" size=12></td> </tr>'\
'</table>'
echo '<br><input type="submit" value="Process Form">'\
'<input type="reset" value="Reset"></form>'
NAME=`echo "$QUERY_STRING" | sed -n 's/^.*name=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
echo "NAME: " $NAME
ssh -o ConnectTimeout=3 -q $NAME uptime > /var/tmp/uptime
cat /var/tmp/uptime
【问题讨论】:
-
内容类型和实际内容之间不需要空行吗?
-
哦,我有,我刚刚删除了那行以节省帖子的空间:)