日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

我使用过的Linux命令之curl - 强大的网络传输工具

發布時間:2024/4/15 linux 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我使用过的Linux命令之curl - 强大的网络传输工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我使用過的Linux命令之curl - 強大的網絡傳輸工具

?

http://codingstandards.iteye.com/blog/807844

博客分類: Linux命令LinuxTomcatAjaxMobile電子商務?

我使用過的Linux命令之curl - 強大的網絡傳輸工具

本文鏈接:http://codingstandards.iteye.com/blog/807844 ? (轉載請注明出處)

用途說明

curl命令是一個功能強大的網絡工具,它能夠通過http、ftp等方式下載文件,也能夠上傳文件。其實curl遠不止前面所說的那些功能,大家可以通過man curl閱讀手冊頁獲取更多的信息。類似的工具還有wget。 curl命令使用了libcurl庫來實現,libcurl庫常用在C程序中用來處理HTTP請求,curlpp是libcurl的一個C++封裝,這幾個東西可以用在抓取網頁、網絡監控等方面的開發,而curl命令可以幫助來解決開發過程中遇到的問題。

常用參數

curl命令參數很多,這里只列出我曾經用過、特別是在shell腳本中用到過的那些。 -v/--verbose 小寫的v參數,用于打印更多信息,包括發送的請求信息,這在調試腳本是特別有用。 -m/--max-time <seconds> 指定處理的最大時長 -H/--header <header> 指定請求頭參數 -s/--slient 減少輸出的信息,比如進度 --connect-timeout <seconds> 指定嘗試連接的最大時長 -x/--proxy <proxyhost[:port]> 指定代理服務器地址和端口,端口默認為1080 -T/--upload-file <file> 指定上傳文件路徑 -o/--output <file> 指定輸出文件名稱 -d/--data/--data-ascii <data> 指定POST的內容 --retry <num> 指定重試次數 -e/--referer <URL> 指定引用地址 -I/--head 僅返回頭部信息,使用HEAD請求

使用示例

示例一 獲取指定網頁

[root@jfht ~]# curl http://www.sunrisecorp.net/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<meta name="title" content="歡迎您 - 上海騰一" />
<meta name="keyword" content="上海騰一,融合通信,電子商務,語音通信,數據通信,基站工程外包托管,物聯網,網站建設,電子商務解決方案,移動互聯網,短信,彩信,呼叫中心,多方會議,PBX,IVR,電子商務策劃方案,設備代維,網絡優化,通信工程,電信增值,3G" />
<meta name="description" content="上海騰一信息技術有限公司專注于電信增值、通信工程、電子商務等領域,擁有近十年的經驗。" />
<title>
歡迎您 - 上海騰一
</title> 插播一下廣告:上海騰一信息技術有限公司是一家致力于通信工程、電子商務和電信增值業務的公司,請訪問官方網址: http://www.sunrisecorp.net/此處省略掉網頁內容
</body>
</html>[root@jfht ~]#

示例二 查看響應頭信息

[root@jfht ~]# curl -I http://www.sunrisecorp.net/
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"17801-1285643951000"
Last-Modified: Tue, 28 Sep 2010 03:19:11 GMT
Content-Type: text/html
Content-Length: 17801
Date: Tue, 12 Oct 2010 12:49:20 GMT

[root@jfht ~]#

示例三 檢查網頁是否可正常訪問

以下是一個tomcat監控腳本的部分內容。 Bash代碼 ?
  • #?usage:?check_once?<port>?<path> ??
  • #?使用curl檢查網頁是否可以正常訪問,如果不能訪問就重啟tomcat。 ??
  • check_once() ??
  • { ??
  • ????????echo ??
  • ????????echo?"$(date)??Tomcat?check?once"??
  • ????????#?2008.08.21?-I/--head?-s/--silent ??
  • ????????#if?curl?-s?-I?--connect-timeout?5?--max-time?10?http://localhost:$1/;?then ??
  • ????????#?2010.02.16?add?200?OK?test ??
  • ????????if?curl?-s?-I?--connect-timeout?5?--max-time?10?http://localhost:$1/$2?|?grep?-q?'200?OK'; ??
  • ??
  • ??
  • ?then ??
  • ????????????????echo?"$(date)??Tomcat?maybe?OK"??
  • ????????else ??
  • ????????????????echo?"$(date)??Tomcat?maybe?FAULT"??
  • ????????????????restart ??
  • ????????fi ??
  • } ??
  • ??
  • #?usage:?check_loop?<port>?<path> ??
  • #?每隔一分鐘檢查一次網頁是否正常 ??
  • check_loop() ??
  • { ??
  • ????????while?true; ??
  • ????????do ??
  • ????????????????sleep?60??
  • ????????????????check_once?$1?$2?>>?$CATALINA_HOME/logs/check.$(date?+%Y-%m-%d).log ??
  • ????????done ??
  • } ??
  • ??
  • #?usage:?monitor?<path> ??
  • #?對path指定的本機網頁進行監控 ??
  • #?2008.06.26??
  • #?2010.09.20?add?path?parameter ??
  • monitor() ??
  • { ??
  • ????????PORT=80??
  • ????????if?grep?'Connector?port="80"'?$CATALINA_HOME/conf/server.xml;?then ??
  • ????????????????PORT=80??
  • ????????elif?grep?'Connector?port="8080"'?$CATALINA_HOME/conf/server.xml;?then ??
  • ????????????????PORT=8080??
  • ????????else ??
  • ????????????????echo?"Cannot?detect?server?port?for?Tomcat"??
  • ????????????????return?12??
  • ????????fi ??
  • ????????echo?"Tomcat?server?port?is?$PORT"??
  • ??
  • ????????if?status;?then ??
  • ????????????????check_loop?$PORT?"$1"?& ??
  • ????????????????#check_loop?$PORT?"$1"??
  • ????????fi ??
  • } ??
  • ???
  • # usage: check_once <port> <path> # 使用curl檢查網頁是否可以正常訪問,如果不能訪問就重啟tomcat。 check_once() {echoecho "$(date) Tomcat check once"# 2008.08.21 -I/--head -s/--silent#if curl -s -I --connect-timeout 5 --max-time 10 http://localhost:$1/; then# 2010.02.16 add 200 OK testif curl -s -I --connect-timeout 5 --max-time 10 http://localhost:$1/$2 | grep -q '200 OK';thenecho "$(date) Tomcat maybe OK"elseecho "$(date) Tomcat maybe FAULT"restartfi } # usage: check_loop <port> <path> # 每隔一分鐘檢查一次網頁是否正常 check_loop() {while true;dosleep 60check_once $1 $2 >> $CATALINA_HOME/logs/check.$(date +%Y-%m-%d).logdone } # usage: monitor <path> # 對path指定的本機網頁進行監控 # 2008.06.26 # 2010.09.20 add path parameter monitor() {PORT=80if grep 'Connector port="80"' $CATALINA_HOME/conf/server.xml; thenPORT=80elif grep 'Connector port="8080"' $CATALINA_HOME/conf/server.xml; thenPORT=8080elseecho "Cannot detect server port for Tomcat"return 12fiecho "Tomcat server port is $PORT"if status; thencheck_loop $PORT "$1" &#check_loop $PORT "$1"fi } 這個腳本的執行方式是 monitor <path>,比如monitor main/index.html。下面是執行時輸出的日志信息片段。 2010年 10月 09日 星期六 15:20:38 CST? Tomcat check once
    2010年 10月 09日 星期六 15:20:46 CST? Tomcat maybe OK

    2010年 10月 09日 星期六 15:21:46 CST? Tomcat check once
    2010年 10月 09日 星期六 15:21:57 CST? Tomcat maybe FAULT
    Tomcat is now running, not stopped: 0
    Tomcat is now running, not stopped: 1
    Tomcat is now running, not stopped: 2
    Tomcat is now running, not stopped: 3
    Tomcat is now running, not stopped: 4
    Tomcat is now running, not stopped: 5
    Tomcat is now running, not stopped: 6
    Tomcat is now running, not stopped: 7
    Tomcat is now running, not stopped: 8
    Tomcat is now running, not stopped: 9
    Tomcat killed use SIGKILL
    Tomcat stopped
    ????? Starting tomcat

    2010年 10月 09日 星期六 15:23:09 CST? Tomcat check once
    2010年 10月 09日 星期六 15:23:09 CST? Tomcat maybe OK

    2010年 10月 09日 星期六 15:24:09 CST? Tomcat check once
    2010年 10月 09日 星期六 15:24:09 CST? Tomcat maybe OK

    示例四 另一個檢查網頁是否正常的腳本

    Bash代碼 ?
  • #?要檢查的網頁地址 ??
  • URL="http://www.sunrisecorp.net/"??
  • ??
  • #?usage:? ??
  • curlit() ??
  • { ??
  • ????????curl?--connect-timeout?15?--max-time?30?--head?--silent?"$URL"?|?grep?'HTTP/1.1?200?OK'??
  • } ??
  • ??
  • #?只有MIN_ALARM次訪問失敗時才告警 ??
  • MIN_ALARM=10??
  • ??
  • #? ??
  • doit() ??
  • { ??
  • ????echo?"=====?$(now)?====="??
  • ????if?!?curlit;?then ??
  • ????????????echo?"$(now)??bbdx?nss?access?failed"??
  • ????????????N=1??
  • ????????????if?[?-e?curlit_error?];?then ??
  • ????????????????????N="$(cat?curlit_error)"??
  • ????????????????????N=$[N+1] ??
  • ????????????fi ??
  • ????????????echo?"$(now)??N=$N"??
  • ????????????echo?$N?>curlit_error ??
  • ????????????if?[?"$N"?==?"$MIN_ALARM"?];?then ??
  • ????????????????????echo?"$(now)??do?notify"??
  • ????????????????????touch?curlit_error ??
  • ????????????????????notify_curlit_error ??
  • ????????????fi ??
  • ????else ??
  • ????????????if?[?-e?curlit_error?];?then ??
  • ????????????????????echo?"$(now)??recovered"??
  • ????????????????????N=$(cat?curlit_error) ??
  • ????????????????????echo?"$(now)??N=$N"??
  • ????????????????????rm?-f?curlit_error ??
  • ????????????????????if?[?"$N"?-ge?"$MIN_ALARM"?];?then ??
  • ????????????????????????????notify_curlit_recovered ??
  • ????????????????????fi ??
  • ????????????fi ??
  • ????fi ??
  • } ??
  • ??
  • doit?>>log/curlit.log?2>&1??
  • ???
  • # 要檢查的網頁地址 URL="http://www.sunrisecorp.net/" # usage: curlit() {curl --connect-timeout 15 --max-time 30 --head --silent "$URL" | grep 'HTTP/1.1 200 OK' } # 只有MIN_ALARM次訪問失敗時才告警 MIN_ALARM=10 # doit() {echo "===== $(now) ====="if ! curlit; thenecho "$(now) bbdx nss access failed"N=1if [ -e curlit_error ]; thenN="$(cat curlit_error)"N=$[N+1]fiecho "$(now) N=$N"echo $N >curlit_errorif [ "$N" == "$MIN_ALARM" ]; thenecho "$(now) do notify"touch curlit_errornotify_curlit_errorfielseif [ -e curlit_error ]; thenecho "$(now) recovered"N=$(cat curlit_error)echo "$(now) N=$N"rm -f curlit_errorif [ "$N" -ge "$MIN_ALARM" ]; thennotify_curlit_recoveredfififi } doit >>log/curlit.log 2>&1

    示例五 使用HttpPost上傳數據

    一個用于http post的腳本。 Bash代碼 ?
  • #!/bin/sh ??
  • ??
  • MS=1350514xxxx ??
  • ??
  • TM=$(date?+"%Y%m%d%H%M%S") ??
  • DT=$(date?+"%Y%m%d") ??
  • ??
  • cat?<<EOF?>reqtmp.xml ??
  • <?xml?version="1.0"?encoding="GBK"??> ??
  • <OwnPlatForm> ??
  • ????????<OrigDomain>QZT</OrigDomain> ??
  • ????????<HomeDomain>BOSS</HomeDomain> ??
  • ????????<ActivityCode>T5100001</ActivityCode> ??
  • ????????<ActionCode>0</ActionCode> ??
  • ????????<TransIDO>$TM</TransIDO> ??
  • ????????<TransIDH></TransIDH> ??
  • ????????<ProcessTime>$TM</ProcessTime> ??
  • ????????<CutOffDay>$DT</CutOffDay> ??
  • ????????<TestFlag>0</TestFlag> ??
  • ????????<Content> ??
  • ????????????????<![CDATA[ ??
  • ????????????????????????<BizProcReq> ??
  • ????????????????????????????????<IDType>01</IDType> ??
  • ????????????????????????????????<IDValue>$MS</IDValue> ??
  • ????????????????????????????????<UserCity>14</UserCity> ??
  • ????????????????????????????????<UserCounty>1419</UserCounty> ??
  • ????????????????????????????????<OprCode>01</OprCode> ??
  • ????????????????????????????????<BizType>51</BizType> ??
  • ????????????????????????????????<OprTime>$TM</OprTime> ??
  • ????????????????????????????????<OprSrc>27</OprSrc> ??
  • ????????????????????????????????<ProductInfo> ??
  • ????????????????????????????????????????<PrdCode>510001</PrdCode> ??
  • ????????????????????????????????</ProductInfo> ??
  • ????????????????????????</BizProcReq> ??
  • ????????????????]]> ??
  • ????????</Content> ??
  • </OwnPlatForm> ??
  • EOF ??
  • ??
  • cat?reqtmp.xml ??
  • ??
  • ??
  • URL="http://10.32.140.230:7092/fcgi-bin/UIG_NEWINT"??
  • ??
  • curl?--verbose?--upload-file?reqtmp.xml??--header?"Content-Type:?text/xml"?"$URL"?--output?rsptmp.xml ??
  • ??
  • cat?rsptmp.xml??
  • #!/bin/sh MS=1350514xxxx TM=$(date +"%Y%m%d%H%M%S") DT=$(date +"%Y%m%d") cat <<EOF >reqtmp.xml <?xml version="1.0" encoding="GBK" ?> <OwnPlatForm><OrigDomain>QZT</OrigDomain><HomeDomain>BOSS</HomeDomain><ActivityCode>T5100001</ActivityCode><ActionCode>0</ActionCode><TransIDO>$TM</TransIDO><TransIDH></TransIDH><ProcessTime>$TM</ProcessTime><CutOffDay>$DT</CutOffDay><TestFlag>0</TestFlag><Content><![CDATA[<BizProcReq><IDType>01</IDType><IDValue>$MS</IDValue><UserCity>14</UserCity><UserCounty>1419</UserCounty><OprCode>01</OprCode><BizType>51</BizType><OprTime>$TM</OprTime><OprSrc>27</OprSrc><ProductInfo><PrdCode>510001</PrdCode></ProductInfo></BizProcReq>]]></Content> </OwnPlatForm> EOF cat reqtmp.xml URL="http://10.32.140.230:7092/fcgi-bin/UIG_NEWINT" curl --verbose --upload-file reqtmp.xml --header "Content-Type: text/xml" "$URL" --output rsptmp.xml cat rsptmp.xml ?

    示例六 使用proxy的腳本

    Bash代碼 ?
  • #?usage:?do_sync_once?<mobile>?<codes>?<area_id>?<opening> ??
  • do_sync_once() ??
  • { ??
  • ????????mobile=$1??
  • ????????codes=$2??
  • ????????area_id=$3??
  • ????????opening=$4?? ??
  • ???????? ??
  • ??
  • ??
  • curl?--silent?--max-time?60?--proxy?http://10.32.187.170:8080?"http://host/boss/sync.jsp?seq=1251747862492&mobile=$mobile&serviceCodes=$codes&areaId=$area_id&opening=$opening"??
  • ??
  • }??
  • # usage: do_sync_once <mobile> <codes> <area_id> <opening> do_sync_once() {mobile=$1codes=$2area_id=$3opening=$4??curl --silent --max-time 60 --proxy http://10.32.187.170:8080 "http://host/boss/sync.jsp?seq=1251747862492&mobile=$mobile&serviceCodes=$codes&areaId=$area_id&opening=$opening" } ?

    示例七 使用Google AJAX Search API進行搜索

    Bash代碼 ?
  • #?usage:?google_search?<STR> ??
  • #?Google搜索 ??
  • google_search() ??
  • { ??
  • ????????REF="http://codingstandards.iteye.com/"??
  • ????????KEY="ABQIAAAAHg_ENG5Yq9pOZd19v64gyxTMcdcN4KfyGCBxustvF1FXdNe4WBQOej_ZiBgIK6-a4M3hTxcVfSkt2g"??
  • ????????STR="$1"??
  • ????????#?采用網頁搜索 ??
  • ????????curl?--retry?5?-e?"$REF"?"http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=$STR&hl=zh-CN&key=$KEY"?2>/dev/null ??
  • ????????#?采用博客搜索 ??
  • ????????#curl?-e?$REF?"http://ajax.googleapis.com/ajax/services/search/blogs?v=1.0&q=$STR&hl=zh-CN"?2>/dev/null ??
  • ????????#curl?--retry?5?-e?$REF?"http://ajax.googleapis.com/ajax/services/search/blogs?v=1.0&q=$STR&hl=zh-CN"?2>/dev/null ??
  • ????????#curl?--retry?5?-e?"$REF"?"http://ajax.googleapis.com/ajax/services/search/blogs?v=1.0&q=$STR&hl=zh-CN&key=$KEY"?2>/dev/null ??
  • }??
  • 轉載于:https://blog.51cto.com/484093/1194819

    總結

    以上是生活随笔為你收集整理的我使用过的Linux命令之curl - 强大的网络传输工具的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日本一区二区三区视频免费看 | 女人的天堂网站 | 国产人与禽zoz0性伦 | 亚洲一二三精品 | 日韩人妻无码一区二区三区99 | 成品人视频ww入口 | 人妻在线一区 | av在线不卡免费看 | 91高清视频免费观看 | 中文字幕日韩电影 | 二级毛片视频 | 青草久久网 | 色爽影院| 懂色av蜜臀av粉嫩av分享吧最新章节 | 人体毛片 | 香蕉国产在线 | 国产香蕉网 | 天堂在线视频免费观看 | 另类综合视频 | 日韩精品一区二区三区四区五区 | 色就是欧美 | 黑人巨大猛交丰满少妇 | 色婷婷国产精品综合在线观看 | 日韩三级视频在线播放 | 无码人妻一区二区三区精品视频 | 欧美色图一区二区 | 五月天久久综合 | 国内久久久久 | 国产一区福利 | 久久国产人妻一区二区免色戒电影 | 免费的理伦片在线播放 | 激情吧| 亚洲第一视频在线观看 | 中文无码熟妇人妻av在线 | 精品麻豆 | 手机看黄色 | av黄色av | 美女洗澡无遮挡 | 国产欧美一区二 | 老司机在线看片 | 91亚洲国产精品 | 欧美成在线 | 亚洲国产精品视频一区二区 | 豆国产97在线 | 亚洲 | 色婷婷av一区二区三区大白胸 | 啪视频网站 | 人人插人人 | 自拍偷拍激情 | 亚洲人成人无码网www国产 | 特级毛片爽www免费版 | 中文字幕av一区二区三区谷原希美 | 闺蜜张开腿让我爽了一夜 | 九九色精品 | 色诱久久av | 亚洲日本在线观看 | 亚洲精品少妇 | 一级在线看 | 精品美女久久 | 视频一区在线播放 | 天天插天天爽 | 国产精品五月天 | 色爱av综合网 | 91成人免费在线观看视频 | 9久久9毛片又大又硬又粗 | 亚洲视频黄 | 免费观看视频一区二区 | 少妇人妻一区 | 就去吻亚洲| www av| 性色av一区二区三区红粉影视 | 亚洲一区二区三区四 | 黄色片在哪看 | 色婷婷视频在线 | 一区二区欧美在线 | 国产在线拍揄自揄拍无码视频 | 欧美国产精品一区二区三区 | 国产18在线观看 | 人人草在线观看 | 91精品毛片 | 精产国品一区二区 | 好爽…又高潮了毛片免费看 | 992av| 偷偷在线观看免费高清av | 中文字幕第11页 | www.色啪啪.com | 中文字幕人妻一区二区三区在线视频 | 欧美va亚洲va| 插我舔内射18免费视频 | 日韩精品2 | 成年人黄色免费网站 | 青草视频在线看 | 一本色道久久亚洲综合精品蜜桃 | 樱井莉亚av| 日本肉体xxxx裸体xxx免费 | 一区二区三区免费在线观看 | 91福利网址 | 国产av剧情一区二区三区 | 日韩中文字幕在线观看 | 欧美大片高清免费观看 |