最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell腳本實現(xiàn)的一個簡易Web服務(wù)器例子分享

 更新時間:2014年12月01日 10:18:22   投稿:junjie  
這篇文章主要介紹了Shell腳本實現(xiàn)的一個簡易Web服務(wù)器例子分享,本文實現(xiàn)的Web服務(wù)器非常簡單實用,可以在你不想安裝nginx、apache等大型WEB服務(wù)器時使用,需要的朋友可以參考下

假設(shè)你想測試網(wǎng)頁和一些CGI,而你又不想麻煩Apache安裝完整的包。這個快速的shell腳本可能只是你所需要的東西。

簡而言之,一個web服務(wù)器是一個應(yīng)用程序,該應(yīng)用程序?qū)⒈镜匚谋疚募ㄟ^網(wǎng)絡(luò)發(fā)送給客戶的請求。如果你讓另一個程序(例如inetd)處理網(wǎng)絡(luò)情況下,web服務(wù)器可以減少到只有 cat "文件名”發(fā)送到stdout。當(dāng)然,困難將提取部分文件名的HTTP請求字符串:任何一個Bash腳本無法輕易做到。

腳本

我們的腳本應(yīng)該像其他任何腳本一樣,加上一些定義:

復(fù)制代碼 代碼如下:

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

inetd將從遠(yuǎn)程主機(jī)接收到的數(shù)據(jù)傳遞給我們的腳本,第一行是標(biāo)準(zhǔn)的HTTP請求,后跟零個或更多的頭文件。我們記錄下請求,并退出休眠:
復(fù)制代碼 代碼如下:

read request

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


最麻煩的部分:從請求的數(shù)據(jù)中提取URL并在本地文件中找到對應(yīng)文件:
復(fù)制代碼 代碼如下:

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

返回含有頭部信息的文件內(nèi)容。
復(fù)制代碼 代碼如下:

if [ -f "$filename" ]; then
  echo -e "HTTP/1.1 200 OK\r"
  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 Found\r"
  echo -e "Content-Type: text/html\r"
  echo -e "\r"
  echo -e "404 Not Found\r"
  echo -e "Not Found
           The requested resource was not found\r"
  echo -e "\r"
fi

好了,腳本完了。

安裝

為了使它工作,你必須添加以下行到/etc/inetd.conf文件:

復(fù)制代碼 代碼如下:

www stream tcp nowait nobody /usr/local/bin/webd webd

webd就是你剛剛創(chuàng)建的腳本名稱。

使用/etc/init.d/inetd restart使腳本生效后,就可以測試它了。在/var/www下放一些HTML文件,打開你最喜歡的Web瀏覽器的輸入以下地址測試:http://localhost/FILENAME.html

請注意,如果你的電腦連接這一個不安全的網(wǎng)絡(luò),這個腳本可能不算一個聰明的事,因為誰都可以通過80端口訪問你硬盤上的文件。一個更好的辦法是使用 tcpd 來保證只允許本地連接。我會寫一些相關(guān)的信息,發(fā)揮你的想象力去干吧!

什么是CGI

就像這個,WEB服務(wù)器是沒什么用處的,它什么都做不到,而且你可以用其他方法來訪問你的文件。我們需要CGI的支持(哪怕是很簡單的)。

理論:不通過網(wǎng)絡(luò)發(fā)送一個文本文件,我們運行一個可執(zhí)行文件,并將其輸出。在這之前,我們已經(jīng)處理的HTTP請求的一步,建立一個 QUERY_STRING變量輸出到可執(zhí)行文件。

要做到這樣,你只需要把第三步的代碼替換成這個樣子的就可以了。

復(fù)制代碼 代碼如下:

url="${request#GET }"
url="${url% HTTP/*}"
query="${url#*\?}"
url="${url%%\?*}"

filename="$base$url"

if [ "$query" != "$url" -a -x "$filename" ]; then
  export QUERY_STRING="$query"
  echo -e "HTTP/1.1 200 OK\r"
  "$filename"
  echo -e "\r"
  exit 0
fi

當(dāng)然,這個小玩意的性能無法與Apache相比,這只是一個小玩意。

相關(guān)文章

  • Linux BASH多進(jìn)程并行處理的方法實現(xiàn)

    Linux BASH多進(jìn)程并行處理的方法實現(xiàn)

    Linux下BASH多進(jìn)程并行處理的實現(xiàn)代碼,需要的朋友可以參考下
    2013-01-01
  • shell通過正則匹配ip地址實例代碼

    shell通過正則匹配ip地址實例代碼

    這篇文章主要給大家介紹了關(guān)于shell如何通過正則匹配ip地址的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用shell具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • shell腳本declare命令的用法詳解(聲明變量的屬性和類型)

    shell腳本declare命令的用法詳解(聲明變量的屬性和類型)

    這篇文章主要介紹了shell腳本declare命令用法(聲明變量的屬性和類型,declare?命令在一般的腳本編寫中并不常用,大多數(shù)情況下直接使用簡單的變量賦值語句即可滿足需求,需要的朋友可以參考下
    2023-06-06
  • 使用AWK在shell中生成日歷小程序

    使用AWK在shell中生成日歷小程序

    這篇文章主要為大家詳細(xì)介紹了如何使用AWK在shell中生成日歷小程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • linux中的vi和vim編輯器操作方法

    linux中的vi和vim編輯器操作方法

    這篇文章主要介紹了linux中的vi和vim編輯器操作方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-05-05
  • Shell腳本數(shù)組用法小結(jié)

    Shell腳本數(shù)組用法小結(jié)

    這篇文章主要介紹了Shell腳本數(shù)組用法小結(jié),本文講解了數(shù)組聲明、數(shù)組遍歷、獲取數(shù)組長度、刪除數(shù)組元素、數(shù)組切片等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • Linux tar 命令用法實例詳解

    Linux tar 命令用法實例詳解

    利用 tar 命令,可以把一大堆的文件和目錄全部打包成一個文件,這對于備份文件或?qū)讉€文件組合成為一個文件以便于網(wǎng)絡(luò)傳輸是非常有用的。這篇文章主要介紹了Linux tar 命令用法詳解,需要的朋友可以參考下
    2018-03-03
  • shell腳本自動修復(fù)mysql損壞的表

    shell腳本自動修復(fù)mysql損壞的表

    這篇文章主要介紹了shell腳本如何自動修復(fù)mysql損壞的表,需要的朋友可以參考下
    2015-10-10
  • Linux下使用ntpdate進(jìn)行時間同步的方法實現(xiàn)

    Linux下使用ntpdate進(jìn)行時間同步的方法實現(xiàn)

    ntpdate是Linux下用于從NTP服務(wù)器同步時間的命令行工具,本文將給大家介紹Linux下使用ntpdate進(jìn)行時間同步的方法實現(xiàn),文中有相關(guān)的實現(xiàn)代碼,需要的朋友可以參考下
    2024-03-03
  • 一文詳解Linux?du命令的使用方法

    一文詳解Linux?du命令的使用方法

    在Linux系統(tǒng)中,du命令是一款功能強(qiáng)大且實用的工具,可用于查看文件和目錄的磁盤使用情況,本文將深入探討du命令的使用方法和一些常見選項,以協(xié)助您更全面地理解和有效地管理系統(tǒng)中的存儲空間,需要的朋友可以參考下
    2024-02-02

最新評論

宜川县| 资兴市| 崇仁县| 清原| 上蔡县| 澄城县| 曲周县| 泰兴市| 衡东县| 阳春市| 海宁市| 金山区| 湾仔区| 贵港市| 射阳县| 库尔勒市| 昂仁县| 沂水县| 光泽县| 海淀区| 松桃| 韶关市| 如皋市| 卓尼县| 嘉鱼县| 土默特右旗| 镇远县| 富阳市| 荆州市| 眉山市| 邯郸县| 常熟市| 信阳市| 望城县| 水富县| 商洛市| 东辽县| 三门峡市| 德格县| 多伦县| 平定县|