<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-314  評論-209  文章-0  trackbacks-0
     
    如果你的IPTABLES基礎知識還不了解,建議先去看看.
    開始配置
    我們來配置一個filter表的防火墻.
    (1)查看本機關于IPTABLES的設置情況
    [root@tp ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target       prot opt source                 destination         
    Chain FORWARD (policy ACCEPT)
    target       prot opt source                 destination         
    Chain OUTPUT (policy ACCEPT)
    target       prot opt source                 destination         
    Chain RH-Firewall-1-INPUT (0 references)
    target       prot opt source                 destination         
    ACCEPT       all    --    0.0.0.0/0              0.0.0.0/0           
    ACCEPT       icmp --    0.0.0.0/0              0.0.0.0/0             icmp type 255 
    ACCEPT       esp    --    0.0.0.0/0              0.0.0.0/0           
    ACCEPT       ah     --    0.0.0.0/0              0.0.0.0/0           
    ACCEPT       udp    --    0.0.0.0/0              224.0.0.251           udp dpt:5353 
    ACCEPT       udp    --    0.0.0.0/0              0.0.0.0/0             udp dpt:631 
    ACCEPT       all    --    0.0.0.0/0              0.0.0.0/0             state RELATED,ESTABLISHED 
    ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:22 
    ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:80 
    ACCEPT       tcp    --    0.0.0.0/0              0.0.0.0/0             state NEW tcp dpt:25 
    REJECT       all    --    0.0.0.0/0              0.0.0.0/0             reject-with icmp-host-prohibited 
    可以看出我在安裝linux時,選擇了有防火墻,并且開放了22,80,25端口.
    如果你在安裝linux時沒有選擇啟動防火墻,是這樣的
    [root@tp ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target       prot opt source                 destination         
    Chain FORWARD (policy ACCEPT)
    target       prot opt source                 destination         
    Chain OUTPUT (policy ACCEPT)
    target       prot opt source                 destination  
    什么規則都沒有.
    (2)清除原有規則.
    不管你在安裝linux時是否啟動了防火墻,如果你想配置屬于自己的防火墻,那就清除現在filter的所有規則.
    [root@tp ~]# iptables -F        清除預設表filter中的所有規則鏈的規則
    [root@tp ~]# iptables -X        清除預設表filter中使用者自定鏈中的規則
    我們在來看一下
    [root@tp ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target       prot opt source                 destination         
    Chain FORWARD (policy ACCEPT)
    target       prot opt source                 destination         
    Chain OUTPUT (policy ACCEPT)
    target       prot opt source                 destination      
    什么都沒有了吧,和我們在安裝linux時沒有啟動防火墻是一樣的.(提前說一句,這些配置就像用命令配置IP一樣,重起就會失去作用),怎么保存.
    [root@tp ~]# /etc/rc.d/init.d/iptables save
    這樣就可以寫到/etc/sysconfig/iptables文件里了.寫入后記得把防火墻重起一下,才能起作用.
    [root@tp ~]# service iptables restart
    現在IPTABLES配置表里什么配置都沒有了,那我們開始我們的配置吧
    (3)設定預設規則
    [root@tp ~]# iptables -p INPUT DROP
    [root@tp ~]# iptables -p OUTPUT ACCEPT
    [root@tp ~]# iptables -p FORWARD DROP
    上面的意思是,當超出了IPTABLES里filter表里的兩個鏈規則(INPUT,FORWARD)時,不在這兩個規則里的數據包怎么處理呢,那就是DROP(放棄).應該說這樣配置是很安全的.我們要控制流入數據包
    而對于OUTPUT鏈,也就是流出的包我們不用做太多限制,而是采取ACCEPT,也就是說,不在著個規則里的包怎么辦呢,那就是通過.
    可以看出INPUT,FORWARD兩個鏈采用的是允許什么包通過,而OUTPUT鏈采用的是不允許什么包通過.
    這樣設置還是挺合理的,當然你也可以三個鏈都DROP,但這樣做我認為是沒有必要的,而且要寫的規則就會增加.但如果你只想要有限的幾個規則是,如只做WEB服務器.還是推薦三個鏈都是DROP.
    注:如果你是遠程SSH登陸的話,當你輸入第一個命令回車的時候就應該掉了.因為你沒有設置任何規則.
    怎么辦,去本機操作唄!
    (4)添加規則.
    首先添加INPUT鏈,INPUT鏈的默認規則是DROP,所以我們就寫需要ACCETP(通過)的鏈
    為了能采用遠程SSH登陸,我們要開啟22端口.
    [root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    [root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (注:這個規則,如果你把OUTPUT 設置成DROP的就要寫上這一部,好多人都是望了寫這一部規則導致,始終無法SSH.在遠程一下,是不是好了.
    其他的端口也一樣,如果開啟了web服務器,OUTPUT設置成DROP的話,同樣也要添加一條鏈:
    [root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT ,其他同理.)
    如果做了WEB服務器,開啟80端口.
    [root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    如果做了郵件服務器,開啟25,110端口.
    [root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
    [root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT

    如果做了FTP服務器,開啟21端口
    [root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
    [root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
    如果做了DNS服務器,開啟53端口
    [root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
    如果你還做了其他的服務器,需要開啟哪個端口,照寫就行了.
    上面主要寫的都是INPUT鏈,凡是不在上面的規則里的,都DROP
    允許icmp包通過,也就是允許ping,
    [root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT設置成DROP的話)
    [root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT    (INPUT設置成DROP的話)
    允許loopback!(不然會導致DNS無法正常關閉等問題)
    IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
    IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
    下面寫OUTPUT鏈,OUTPUT鏈默認規則是ACCEPT,所以我們就寫需要DROP(放棄)的鏈.
    減少不安全的端口連接
    [root@tp ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP
    [root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP
    有些些特洛伊木馬會掃描端口31337到31340(即黑客語言中的 elite 端口)上的服務。既然合法服務都不使用這些非標準端口來通信,阻塞這些端口能夠有效地減少你的網絡上可能被感染的機器和它們的遠程主服務器進行獨立通信的機會
    還有其他端口也一樣,像:31335、27444、27665、20034 NetBus、9704、137-139(smb),2049(NFS)端口也應被禁止,我在這寫的也不全,有興趣的朋友應該去查一下相關資料.
    當然出入更安全的考慮你也可以包OUTPUT鏈設置成DROP,那你添加的規則就多一些,就像上邊添加
    允許SSH登陸一樣.照著寫就行了.
    下面寫一下更加細致的規則,就是限制到某臺機器
    如:我們只允許192.168.0.3的機器進行SSH連接
    [root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
    如果要允許,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.
    24表示子網掩碼數.但要記得把 /etc/sysconfig/iptables 里的這一行刪了.
    -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因為它表示所有地址都可以登陸.
    或采用命令方式:
    [root@tp ~]# iptables -D INPUT -p tcp --dport 22 -j ACCEPT
    然后保存,我再說一邊,反是采用命令的方式,只在當時生效,如果想要重起后也起作用,那就要保存.寫入到/etc/sysconfig/iptables文件里.
    [root@tp ~]# /etc/rc.d/init.d/iptables save
    這樣寫 !192.168.0.3 表示除了192.168.0.3的ip地址
    其他的規則連接也一樣這么設置.
    在下面就是FORWARD鏈,FORWARD鏈的默認規則是DROP,所以我們就寫需要ACCETP(通過)的鏈,對正在轉發鏈的監控.
    開啟轉發功能,(在做NAT時,FORWARD默認規則是DROP時,必須做)
    [root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
    [root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
    丟棄壞的TCP包
    [root@tp ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
    處理IP碎片數量,防止攻擊,允許每秒100個
    [root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
    設置ICMP包過濾,允許每秒1個包,限制觸發條件是10個包.
    [root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
    我在前面只所以允許ICMP包通過,就是因為我在這里有限制.
    二,配置一個NAT表放火墻
    1,查看本機關于NAT的設置情況
    [root@tp rc.d]# iptables -t nat -L
    Chain PREROUTING (policy ACCEPT)
    target       prot opt source                 destination         
    Chain POSTROUTING (policy ACCEPT)
    target       prot opt source                 destination         
    SNAT         all    --    192.168.0.0/24         anywhere              to:211.101.46.235
    Chain OUTPUT (policy ACCEPT)
    target       prot opt source                 destination    
    我的NAT已經配置好了的(只是提供最簡單的代理上網功能,還沒有添加防火墻規則).關于怎么配置NAT,參考我的另一篇文章
    當然你如果還沒有配置NAT的話,你也不用清除規則,因為NAT在默認情況下是什么都沒有的
    如果你想清除,命令是
    [root@tp ~]# iptables -F -t nat
    [root@tp ~]# iptables -X -t nat
    [root@tp ~]# iptables -Z -t nat
    2,添加規則
    添加基本的NAT地址轉換,(關于如何配置NAT可以看我的另一篇文章),
    添加規則,我們只添加DROP鏈.因為默認鏈全是ACCEPT.
    防止外網用內網IP欺騙
    [root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
    [root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
    [root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP

    如果我們想,比如阻止MSN,QQ,BT等的話,需要找到它們所用的端口或者IP,(個人認為沒有太大必要)
    例:
    禁止與211.101.46.253的所有連接
    [root@tp ~]# iptables -t nat -A PREROUTING    -d 211.101.46.253 -j DROP
    禁用FTP(21)端口
    [root@tp ~]# iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP
    這樣寫范圍太大了,我們可以更精確的定義.
    [root@tp ~]# iptables -t nat -A PREROUTING    -p tcp --dport 21 -d 211.101.46.253 -j DROP
    這樣只禁用211.101.46.253地址的FTP連接,其他連接還可以.如web(80端口)連接.
    按照我寫的,你只要找到QQ,MSN等其他軟件的IP地址,和端口,以及基于什么協議,只要照著寫就行了.
    最后:
    drop非法連接
    [root@tp ~]# iptables -A INPUT     -m state --state INVALID -j DROP
    [root@tp ~]# iptables -A OUTPUT    -m state --state INVALID -j DROP
    [root@tp ~]# iptables-A FORWARD -m state --state INVALID -j DROP

    允許所有已經建立的和相關的連接
    [root@tp ~]# iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    [root@tp ~]# iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    [root@tp ~]# /etc/rc.d/init.d/iptables save

    這樣就可以寫到/etc/sysconfig/iptables文件里了.寫入后記得把防火墻重起一下,才能起作用.

    [root@tp ~]# service iptables restart


    別忘了保存,不行就寫一部保存一次.你可以一邊保存,一邊做實驗,看看是否達到你的要求,
    上面的所有規則我都試過,沒有問題.
    寫這篇文章,用了我將近1個月的時間.查找資料,自己做實驗,希望對大家有所幫助.如有不全及不完善的地方還請提出.
    因為本篇文章以配置為主.關于IPTABLES的基礎知識及指令命令說明等我會盡快傳上,當然你可以去網上搜索一下,還是很多的.
    posted @ 2015-11-24 16:15 xzc 閱讀(227) | 評論 (0)編輯 收藏
         摘要: meta表修復一Java代碼  查看hbasemeta情況  hbase hbck  1.重新修復hbase meta表(根據hdfs上的regioninfo文件,生成meta表)  hbase hbck -fixMeta  2.重新將hbase m...  閱讀全文
    posted @ 2015-11-19 18:08 xzc 閱讀(1401) | 評論 (0)編輯 收藏

     echo "Cfoo'barxml" | sed "s/'/::/g" |  sed 's/::/\\:/g' |  sed "s/:/'/g"    替換單引號為 \'

     

    ------------------------

    sed 替換單引號'

    echo "mmm'sss" > test
    cat test


    把test內容中單引號替換成雙引號
    sed 's/'"'"/'"''/g' test  ==> sed 's/' " ' " / ' " ' '/g' test
    解析下:
    's/' => 要進行替換操作,后緊跟匹配字符
    "'" => 用雙引號包裹著單引號
    /   =>分割符
    '"'  => 用單引號包裹著雙引號
    '/g' =>分隔符,全局替換


    當然還可以使用下面這兩種方法替換:
    sed s#\'#\"#g test   最外層使用#分隔,里面使用轉義單引號,轉義雙引號
    sed "s/'/\"/g" test    最外層使用雙引號,里面使用單引號,轉義雙引號


    echo "mmm'sss"  | sed 's/'"'"/'"''/g'
    echo "mmm'sss"  | sed s#\'#\"#g
    echo "mmm'sss"  | sed "s/'/\"/g"

     

    awk '{print "sed '\''s/"$1"\\t/"$2"\\t/g'\'' ref_Zv9_top_level.bed.chrom"}' ref_Zv9_top_level.gff3_transID

    sed 's/rna10004\t/XR_223343.1\t/g' ref_Zv9_top_level.bed.chrom
    sed 's/rna10000\t/XR_223342.1\t/g' ref_Zv9_top_level.bed.chrom

     

    sed 's/\]/\"/g'   替換]為“

    sed 's/\[/\"/g'   替換[為“

    posted @ 2015-10-29 19:52 xzc 閱讀(1846) | 評論 (1)編輯 收藏
    shell中${}的妙用
     
    1. 截斷功能
    ${file#*/}:       拿掉第一條/及其左邊的字符串:dir1/dir2/dir3/my.file.txt
    ${file##*/}:    拿掉最后一條/及其左邊的字符串:my.file.txt
    ${file#*.}:       拿掉第一個.及其左邊的字符串:file.txt
    ${file##*.}:    拿掉最后一個.及其左邊的字符串:txt
    ${file%/*}:     拿掉最后條/及其右邊的字符串:/dir1/dir2/dir3
    ${file%%/*}: 拿掉第一條/及其右邊的字符串:(空值)
    ${file%.*}:    拿掉最后一個.及其右邊的字符串:/dir1/dir2/dir3/my.file
    ${file%%.*}: 拿掉第一個.及其右邊的字符串:/dir1/dir2/dir3/my
    記憶的方法為:
    [list]#是去掉左邊, ##最后一個
          %是去掉右邊, %%第一個
    2. 字符串提取 
    單一符號是最小匹配﹔兩個符號是最大匹配。
    ${file:0:5}:提取最左邊的 5 個字節:/dir1
    ${file:5:5}:提取第 5 個字節右邊的連續 5 個字節:/dir2
    3. 字符串替換
    ${file/dir/path}:將第一個 dir 提換為 path:/path1/dir2/dir3/my.file.txt
    ${file//dir/path}:將全部 dir 提換為 path:/path1/path2/path3/my.file.txt
    4. 針對不同的變量狀態賦值(沒設定、空值、非空值):
    ${file-my.file.txt}: 若$file沒有設定,則使用my.file.txt作返回值。(空值及非空值時不作處理)
    ${file:-my.file.txt}:若$file沒有設定或為空值,則使用my.file.txt作返回值。(非空值時不作處理)
    ${file+my.file.txt}: 若$file設為空值或非空值,均使用my.file.txt作返回值。(沒設定時不作處理)
    ${file:+my.file.txt}:若$file為非空值,則使用my.file.txt作返回值。(沒設定及空值時不作處理)
    ${file=my.file.txt}: 若$file沒設定,則使用my.file.txt作返回值,同時將$file 賦值為 my.file.txt。(空值及非空值時不作處理)
    ${file:=my.file.txt}:若$file沒設定或為空值,則使用my.file.txt作返回值,同時將 $file 賦值為 my.file.txt。(非空值時不作處理)
    ${file?my.file.txt}: 若$file沒設定,則將my.file.txt輸出至 STDERR。(空值及非空值時不作處理)
    ${file:?my.file.txt}:若$file沒設定或為空值,則將my.file.txt輸出至STDERR。(非空值時不作處理)
    注意: 
    ":+"的情況是不包含空值的.
    ":-", ":="等只要有號就是包含空值(null).
    5. 變量的長度
    ${#file}
    6. 數組運算
    A=(a b c def)
    ${A[@]} 或 ${A[*]} 可得到 a b c def (全部組數)
    ${A[0]} 可得到 a (第一個組數),${A[1]} 則為第二個組數...
    ${#A[@]} 或 ${#A[*]} 可得到 4 (全部組數數量)
    ${#A[0]} 可得到 1 (即第一個組數(a)的長度),${#A[3]} 可得到 3 (第四個組數(def)的長度)
    posted @ 2015-10-29 16:18 xzc 閱讀(160) | 評論 (0)編輯 收藏

    在linux操作系統中,find命令非常強大,在文件與目錄的查找方面可謂無所不至其極,如果能結合xargs命令使得,更是強大無比。

    以下來看看find命令忽略目錄查找的用法吧。

    例1,根據文件屬性查找:


    復制代碼
    代碼如下:

    find . -type f -name "*config*" ! -path "./tmp/*" ! -path "./scripts/*" ! -path "./node_modules/*" 
    Explanation:
    find . - Start find from current working directory (recursively by default) 
    -type f - Specify to find that you only want files in the results 
    -name "*_peaks.bed" - Look for files with the name ending in _peaks.bed 
    ! -path "./tmp/*" - Exclude all results whose path starts with ./tmp/ 
    ! -path "./scripts/*" - Also exclude all results whose path starts with ./scripts/

    例2,根據文件內容查找:


    復制代碼
    代碼如下:

    grep -n -r --exclude-dir='node_modules' --exclude-dir='logs' --exclude="nohup.out" 192 *




    使用find命令在linux系統中查找文件時,有時需要忽略某些目錄,可以使用 -prune 參數來進行過濾。
    不過必須注意:要忽略的路徑參數要緊跟著搜索的路徑之后,否則該參數無法起作用。

    例如:指定搜索/home/zth目錄下的所有文件,但是會忽略/home/zth/astetc的路徑:


    復制代碼
    代碼如下:

    find /home/zth -path "/home/zth/astetc" -prune -o -type f -print

    按照文件名來搜索則為:


    復制代碼
    代碼如下:

    find /home/zth -path "/home/zth/astetc" -prune -o -type f -name "cdr_*.conf" -print

    要忽略兩個以上的路徑如何處理?


    復制代碼
    代碼如下:

    find /home/zth /( -path "/home/zth/astetc" -o -path "/home/zth/etc" /) -prune -o -type f -print
    find /home/zth /( -path "/home/zth/astetc" -o -path "/home/zth/etc" /) -prune -o -type f -name "cdr_*.conf" -print

    注意:/( 和/) 前后都有空格。

    查找某個文件包含內容,以下語句可以解決目錄帶空格的問題:


    復制代碼
    代碼如下:

    find ./ -name "mysql*" -print0 |xargs -0 grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"

    如果目錄不帶空格,可以這樣:
     

    復制代碼
    代碼如下:

    find ./ -name "mysql*" |xargs grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"

    通過以上的例子,大家應該可以掌握find命令查找文件時,忽略相關目錄的方法了。

    posted @ 2015-10-28 11:33 xzc 閱讀(1387) | 評論 (1)編輯 收藏

    X509 文件擴展名

    首先我們要理解文件的擴展名代表什么。DER、PEM、CRT和CER這些擴展名經常令人困惑。很多人錯誤地認為這些擴展名可以互相代替。盡管的確有時候有些擴展名是可以互換的,但是最好你能確定證書是如何編碼的,進而正確地標識它們。正確地標識證書有助于證書的管理。


    編碼 (也用于擴展名)

    • .DER 擴展名DER用于二進制DER編碼的證書。這些證書也可以用CER或者CRT作為擴展名。比較合適的說法是“我有一個DER編碼的證書”,而不是“我有一個DER證書”。
    • .PEM = 擴展名PEM用于ASCII(Base64)編碼的各種X.509 v3 證書文件開始由一行"—– BEGIN …“開始。

    常用的擴展名

    • .CRT = 擴展名CRT用于證書。證書可以是DER編碼,也可以是PEM編碼。擴展名CER和CRT幾乎是同義詞。這種情況在各種unix/linux系統中很常見。
    • CER = CRT證書的微軟型式。可以用微軟的工具把CRT文件轉換為CER文件(CRT和CER必須是相同編碼的,DER或者PEM)。擴展名為CER的文件可以被IE識別并作為命令調用微軟的cryptoAPI(具體點就是rudll32.exe cryptext.dll, CyrptExtOpenCER),進而彈出一個對話框來導入并/或查看證書內容。
    • .KEY = 擴展名KEY用于PCSK#8的公鑰和私鑰。這些公鑰和私鑰可以是DER編碼或者PEM編碼。

    CRT文件和CER文件只有在使用相同編碼的時候才可以安全地相互替代。

    posted @ 2015-10-01 10:12 xzc 閱讀(456) | 評論 (0)編輯 收藏

    原文地址: http://www.thegeekstuff.com/2012/04/curl-examples/


    下載單個文件,默認將輸出打印到標準輸出中(STDOUT)中

    curl http://www.centos.org

    通過-o/-O選項保存下載的文件到指定的文件中:
    -o:將文件保存為命令行中指定的文件名的文件中
    -O:使用URL中默認的文件名保存文件到本地

    1 # 將文件下載到本地并命名為mygettext.html
    2 curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
    3 
    4 # 將文件保存到本地并命名為gettext.html
    5 curl -O http://www.gnu.org/software/gettext/manual/gettext.html

    同樣可以使用轉向字符">"對輸出進行轉向輸出

    同時獲取多個文件

    1 curl -O URL1 -O URL2

    若同時從同一站點下載多個文件時,curl會嘗試重用鏈接(connection)。

    通過-L選項進行重定向
    默認情況下CURL不會發送HTTP Location headers(重定向).當一個被請求頁面移動到另一個站點時,會發送一個HTTP Loaction header作為請求,然后將請求重定向到新的地址上。
    例如:訪問google.com時,會自動將地址重定向到google.com.hk上。

    復制代碼
     1 curl http://www.google.com
     2 <HTML>
     3 <HEAD>
     4     <meta http-equiv="content-type" content="text/html;charset=utf-8">
     5     <TITLE>302 Moved</TITLE>
     6 </HEAD>
     7 <BODY>
     8     <H1>302 Moved</H1>
     9     The document has moved
    10     <A HREF="http://www.google.com.hk/url?sa=p&amp;hl=zh-CN&amp;pref=hkredirect&amp;pval=yes&amp;q=http://www.google.com.hk/&amp;ust=1379402837567135amp;usg=AFQjCNF3o7umf3jyJpNDPuF7KTibavE4aA">here</A>.
    11 </BODY>
    12 </HTML>
    復制代碼

    上述輸出說明所請求的檔案被轉移到了http://www.google.com.hk。

    這是可以通過使用-L選項進行強制重定向

    1 # 讓curl使用地址重定向,此時會查詢google.com.hk站點
    2 curl -L http://www.google.com

    斷點續傳

    通過使用-C選項可對大文件使用斷點續傳功能,如:

    復制代碼
    1 # 當文件在下載完成之前結束該進程
    2 $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
    3 ##############             20.1%
    4 
    5 # 通過添加-C選項繼續對該文件進行下載,已經下載過的文件不會被重新下載
    6 curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
    7 ###############            21.1%
    復制代碼

    對CURL使用網絡限速
    通過--limit-rate選項對CURL的最大網絡使用進行限制

    1 # 下載速度最大不會超過1000B/second
    2 
    3 curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html

    下載指定時間內修改過的文件

    當下載一個文件時,可對該文件的最后修改日期進行判斷,如果該文件在指定日期內修改過,就進行下載,否則不下載。
    該功能可通過使用-z選項來實現:

    1 # 若yy.html文件在2011/12/21之后有過更新才會進行下載
    2 curl -z 21-Dec-11 http://www.example.com/yy.html

    CURL授權

    在訪問需要授權的頁面時,可通過-u選項提供用戶名和密碼進行授權

    1 curl -u username:password URL
    2 
    3 # 通常的做法是在命令行只輸入用戶名,之后會提示輸入密碼,這樣可以保證在查看歷史記錄時不會將密碼泄露
    4 curl -u username URL

    從FTP服務器下載文件

    CURL同樣支持FTP下載,若在url中指定的是某個文件路徑而非具體的某個要下載的文件名,CURL則會列出該目錄下的所有文件名而并非下載該目錄下的所有文件

    1 # 列出public_html下的所有文件夾和文件
    2 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
    3 
    4 # 下載xss.php文件
    5 curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php

    上傳文件到FTP服務器

    通過 -T 選項可將指定的本地文件上傳到FTP服務器上

    復制代碼
    # 將myfile.txt文件上傳到服務器
    curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
    
    # 同時上傳多個文件
    curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com
    
    # 從標準輸入獲取內容保存到服務器指定的文件中
    curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
    復制代碼

    獲取更多信息

    通過使用 -v 和 -trace獲取更多的鏈接信息

    通過字典查詢單詞

    復制代碼
    1 # 查詢bash單詞的含義
    2 curl dict://dict.org/d:bash
    3 
    4 # 列出所有可用詞典
    5 curl dict://dict.org/show:db
    6 
    7 # 在foldoc詞典中查詢bash單詞的含義
    8 curl dict://dict.org/d:bash:foldoc
    復制代碼

    為CURL設置代理

    -x 選項可以為CURL添加代理功能

    1 # 指定代理主機和端口
    2 curl -x proxysever.test.com:3128 http://google.co.in

     

    其他網站整理

    保存與使用網站cookie信息

    1 # 將網站的cookies信息保存到sugarcookies文件中
    2 curl -D sugarcookies http://localhost/sugarcrm/index.php
    3 
    4 # 使用上次保存的cookie信息
    5 curl -b sugarcookies http://localhost/sugarcrm/index.php

    傳遞請求數據

    默認curl使用GET方式請求數據,這種方式下直接通過URL傳遞數據
    可以通過 --data/-d 方式指定使用POST方式傳遞數據

    復制代碼
    1 # GET
    2 curl -u username https://api.github.com/user?access_token=XXXXXXXXXX
    3 
    4 # POST
    5 curl -u username --data "param1=value1&param2=value" https://api.github.com
    6 
    7 # 也可以指定一個文件,將該文件中的內容當作數據傳遞給服務器端
    8 curl --data @filename https://github.api.com/authorizations
    復制代碼

    注:默認情況下,通過POST方式傳遞過去的數據中若有特殊字符,首先需要將特殊字符轉義在傳遞給服務器端,如value值中包含有空格,則需要先將空格轉換成%20,如:

    1 curl -d "value%201" http://hostname.com

    在新版本的CURL中,提供了新的選項 --data-urlencode,通過該選項提供的參數會自動轉義特殊字符。

    1 curl --data-urlencode "value 1" http://hostname.com

    除了使用GET和POST協議外,還可以通過 -X 選項指定其它協議,如:

    1 curl -I -X DELETE https://api.github.cim

    上傳文件

    1 curl --form "fileupload=@filename.txt" http://hostname/resource

     

    http://curl.haxx.se/docs/httpscripting.html

    posted @ 2015-09-23 16:55 xzc 閱讀(334) | 評論 (2)編輯 收藏

    方法一: 使用全局變量

    1. g_result=""  
    2.   
    3. function testFunc()  
    4. {  
    5.     g_result='local value'  
    6. }  
    7.   
    8. testFunc  
    9. echo $g_result  

    方法二: 把shell函數作為子程序調用,將其結果寫到子程序的標準輸出

    1. function testFunc()  
    2. {  
    3.     local_result='local value'  
    4.     echo $local_result  
    5. }  
    6.   
    7. result=$(testFunc)  
    8. echo $result  

    看到一篇關于函數返回值的好文章,分享一下: http://www.linuxjournal.com/content/return-values-bash-functions 
    posted @ 2015-09-21 10:20 xzc 閱讀(4460) | 評論 (2)編輯 收藏
         摘要: 12345678$# 是傳給腳本的參數個數$0 是腳本本身的名字$1 是傳遞給該shell腳本的第一個參數$2 是傳遞給該shell腳本的第二個參數$@ 是傳給腳本的所有參數的列表$* 是以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過9個$$ 是腳本運行的當前進程ID號$? 是顯示最后命令的退出狀態,0表示沒有錯誤,其他表示有錯誤  閱讀全文
    posted @ 2015-09-15 20:07 xzc 閱讀(250) | 評論 (0)編輯 收藏
         摘要: #!/bin/sh #測試各種字符串比較操作。#shell中對變量的值添加單引號,爽引號和不添加的區別:對類型來說是無關的,即不是添加了引號就變成了字符串類型,#單引號不對相關量進行替換,如不對$符號解釋成變量引用,從而用對應變量的值替代,雙引號則會進行替代#author:tenfyguo A="$1"B="$2" echo "輸入的原始值:A=$A,B=$B"&nb...  閱讀全文
    posted @ 2015-09-15 14:52 xzc 閱讀(2008) | 評論 (1)編輯 收藏
    僅列出標題
    共32頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 Last 
    主站蜘蛛池模板: 无码日韩人妻AV一区免费l| 亚洲AV中文无码乱人伦下载| 亚洲春黄在线观看| 一级毛片在线免费观看| 久久久青草青青国产亚洲免观| 国产V亚洲V天堂A无码| 亚洲av综合av一区| 一区二区三区免费电影| 国产精品免费小视频| 亚洲一本到无码av中文字幕| 思思re热免费精品视频66| 亚洲欧洲另类春色校园小说| 182tv免费视视频线路一二三| 中文字幕亚洲日韩无线码| 亚洲免费日韩无码系列| 暖暖在线视频免费视频| 中字幕视频在线永久在线观看免费| 在线中文高清资源免费观看| 中文字幕亚洲情99在线| 久久精品中文字幕免费| 久久丫精品国产亚洲av| 免费无码精品黄AV电影| 亚洲日韩国产精品第一页一区| 香蕉免费在线视频| 又大又粗又爽a级毛片免费看| 亚洲精品二三区伊人久久| 一个人看的免费视频www在线高清动漫| 又粗又硬免费毛片| 中国一级全黄的免费观看| 免费国产一级特黄久久| 爱情岛论坛免费视频| 久久久久久亚洲精品中文字幕| 欧洲亚洲综合一区二区三区| 18禁超污无遮挡无码免费网站国产| 亚洲国产精彩中文乱码AV| 最近新韩国日本免费观看| 国产成人aaa在线视频免费观看 | 国产成人亚洲精品影院| 涩涩色中文综合亚洲| 亚洲成?v人片天堂网无码| 国产亚洲精品成人AA片|