xml地图|网站地图|网站标签 [设为首页] [加入收藏]
Shell脚本实现的一个简易Web服务器例子分享
分类:网络频道

例子

假设你想测试网页和一些CGI,而你又不想麻烦Apache安装完整的包。这个快速的shell脚本可能只是你所需要的东西。

 代码如下

简而言之,一个web服务器是一个应用程序,该应用程序将本地文本文件通过网络发送给客户的请求。如果你让另一个程序(例如inetd)处理网络情况下,web服务器可以减少到只有 cat "文件名”发送到stdout。当然,困难将提取部分文件名的HTTP请求字符串:任何一个Bash脚本无法轻易做到。

$fid = intval(isset($_GET['fid'])?$_GET['fid']:0);
if( ! $fid )
{
 header("HTTP/1.1 404 Not Found");
 header("Status: 404 Not Found"); 
 exit;
}

脚本

如果有404页面我们还可以这样

我们的脚本应该像其他任何脚本一样,加上一些定义:

PHP实现404未找到方法

复制代码 代码如下:

 代码如下

#!/bin/bash
base=/var/www

header('HTTP/1.1 404 Not Found');
header("status: 404 Not Found");
include('404.php'); //404提示页
exit();

inetd将从远程主机接收到的数据传递给我们的脚本,第一行是标准的HTTP请求,后跟零个或更多的头文件。我们记录下请求,并退出休眠:

然后去这里测试HTTP状态:

复制代码 代码如下:

http://tool.chinaz.com/pagestatus/

read request

while /bin/true; do
  read header
  [ "$header" == $'r' ] && break;
done

最麻烦的部分:从请求的数据中提取URL并在本地文件中找到对应文件:

复制代码 代码如下:

url="${request#GET }"
url="${url% HTTP/*}"
filename="$base$url"

返回含有头部信息的文件内容。

复制代码 代码如下:

if [ -f "$filename" ]; then
  echo -e "HTTP/1.1 200 OKr"
  echo -e "Content-Type: `/usr/bin/file -bi "$filename"`r"
  echo -e "r"
  cat "$filename"
  echo -e "r"
else
  echo -e "HTTP/1.1 404 Not Foundr"
  echo -e "Content-Type: text/htmlr"
  echo -e "r"
  echo -e "404 Not Foundr"
  echo -e "Not Found
           The requested resource was not foundr"
  echo -e "r"
fi

好了,脚本完了。

本文由宝马娱乐在线发布于网络频道,转载请注明出处:Shell脚本实现的一个简易Web服务器例子分享

上一篇:php 宝马娱乐在线网址:xml分析函数代码第1/2页 下一篇:PHP中单例模式的详细解析
猜你喜欢
热门排行
精彩图文