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

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

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

    隨筆-314  評(píng)論-209  文章-0  trackbacks-0
     
    如果你的IPTABLES基礎(chǔ)知識(shí)還不了解,建議先去看看.
    開始配置
    我們來(lái)配置一個(gè)filter表的防火墻.
    (1)查看本機(jī)關(guān)于IPTABLES的設(shè)置情況
    [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時(shí),選擇了有防火墻,并且開放了22,80,25端口.
    如果你在安裝linux時(shí)沒有選擇啟動(dòng)防火墻,是這樣的
    [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  
    什么規(guī)則都沒有.
    (2)清除原有規(guī)則.
    不管你在安裝linux時(shí)是否啟動(dòng)了防火墻,如果你想配置屬于自己的防火墻,那就清除現(xiàn)在filter的所有規(guī)則.
    [root@tp ~]# iptables -F        清除預(yù)設(shè)表filter中的所有規(guī)則鏈的規(guī)則
    [root@tp ~]# iptables -X        清除預(yù)設(shè)表filter中使用者自定鏈中的規(guī)則
    我們?cè)趤?lái)看一下
    [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      
    什么都沒有了吧,和我們?cè)诎惭blinux時(shí)沒有啟動(dòng)防火墻是一樣的.(提前說(shuō)一句,這些配置就像用命令配置IP一樣,重起就會(huì)失去作用),怎么保存.
    [root@tp ~]# /etc/rc.d/init.d/iptables save
    這樣就可以寫到/etc/sysconfig/iptables文件里了.寫入后記得把防火墻重起一下,才能起作用.
    [root@tp ~]# service iptables restart
    現(xiàn)在IPTABLES配置表里什么配置都沒有了,那我們開始我們的配置吧
    (3)設(shè)定預(yù)設(shè)規(guī)則
    [root@tp ~]# iptables -p INPUT DROP
    [root@tp ~]# iptables -p OUTPUT ACCEPT
    [root@tp ~]# iptables -p FORWARD DROP
    上面的意思是,當(dāng)超出了IPTABLES里filter表里的兩個(gè)鏈規(guī)則(INPUT,FORWARD)時(shí),不在這兩個(gè)規(guī)則里的數(shù)據(jù)包怎么處理呢,那就是DROP(放棄).應(yīng)該說(shuō)這樣配置是很安全的.我們要控制流入數(shù)據(jù)包
    而對(duì)于OUTPUT鏈,也就是流出的包我們不用做太多限制,而是采取ACCEPT,也就是說(shuō),不在著個(gè)規(guī)則里的包怎么辦呢,那就是通過(guò).
    可以看出INPUT,FORWARD兩個(gè)鏈采用的是允許什么包通過(guò),而OUTPUT鏈采用的是不允許什么包通過(guò).
    這樣設(shè)置還是挺合理的,當(dāng)然你也可以三個(gè)鏈都DROP,但這樣做我認(rèn)為是沒有必要的,而且要寫的規(guī)則就會(huì)增加.但如果你只想要有限的幾個(gè)規(guī)則是,如只做WEB服務(wù)器.還是推薦三個(gè)鏈都是DROP.
    注:如果你是遠(yuǎn)程SSH登陸的話,當(dāng)你輸入第一個(gè)命令回車的時(shí)候就應(yīng)該掉了.因?yàn)槟銢]有設(shè)置任何規(guī)則.
    怎么辦,去本機(jī)操作唄!
    (4)添加規(guī)則.
    首先添加INPUT鏈,INPUT鏈的默認(rèn)規(guī)則是DROP,所以我們就寫需要ACCETP(通過(guò))的鏈
    為了能采用遠(yuǎn)程SSH登陸,我們要開啟22端口.
    [root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    [root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (注:這個(gè)規(guī)則,如果你把OUTPUT 設(shè)置成DROP的就要寫上這一部,好多人都是望了寫這一部規(guī)則導(dǎo)致,始終無(wú)法SSH.在遠(yuǎn)程一下,是不是好了.
    其他的端口也一樣,如果開啟了web服務(wù)器,OUTPUT設(shè)置成DROP的話,同樣也要添加一條鏈:
    [root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT ,其他同理.)
    如果做了WEB服務(wù)器,開啟80端口.
    [root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    如果做了郵件服務(wù)器,開啟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服務(wù)器,開啟21端口
    [root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
    [root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
    如果做了DNS服務(wù)器,開啟53端口
    [root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
    如果你還做了其他的服務(wù)器,需要開啟哪個(gè)端口,照寫就行了.
    上面主要寫的都是INPUT鏈,凡是不在上面的規(guī)則里的,都DROP
    允許icmp包通過(guò),也就是允許ping,
    [root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT設(shè)置成DROP的話)
    [root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT    (INPUT設(shè)置成DROP的話)
    允許loopback!(不然會(huì)導(dǎo)致DNS無(wú)法正常關(guān)閉等問題)
    IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
    IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
    下面寫OUTPUT鏈,OUTPUT鏈默認(rèn)規(guī)則是ACCEPT,所以我們就寫需要DROP(放棄)的鏈.
    減少不安全的端口連接
    [root@tp ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP
    [root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP
    有些些特洛伊木馬會(huì)掃描端口31337到31340(即黑客語(yǔ)言中的 elite 端口)上的服務(wù)。既然合法服務(wù)都不使用這些非標(biāo)準(zhǔn)端口來(lái)通信,阻塞這些端口能夠有效地減少你的網(wǎng)絡(luò)上可能被感染的機(jī)器和它們的遠(yuǎn)程主服務(wù)器進(jìn)行獨(dú)立通信的機(jī)會(huì)
    還有其他端口也一樣,像:31335、27444、27665、20034 NetBus、9704、137-139(smb),2049(NFS)端口也應(yīng)被禁止,我在這寫的也不全,有興趣的朋友應(yīng)該去查一下相關(guān)資料.
    當(dāng)然出入更安全的考慮你也可以包OUTPUT鏈設(shè)置成DROP,那你添加的規(guī)則就多一些,就像上邊添加
    允許SSH登陸一樣.照著寫就行了.
    下面寫一下更加細(xì)致的規(guī)則,就是限制到某臺(tái)機(jī)器
    如:我們只允許192.168.0.3的機(jī)器進(jìn)行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表示子網(wǎng)掩碼數(shù).但要記得把 /etc/sysconfig/iptables 里的這一行刪了.
    -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因?yàn)樗硎舅械刂范伎梢缘顷?
    或采用命令方式:
    [root@tp ~]# iptables -D INPUT -p tcp --dport 22 -j ACCEPT
    然后保存,我再說(shuō)一邊,反是采用命令的方式,只在當(dāng)時(shí)生效,如果想要重起后也起作用,那就要保存.寫入到/etc/sysconfig/iptables文件里.
    [root@tp ~]# /etc/rc.d/init.d/iptables save
    這樣寫 !192.168.0.3 表示除了192.168.0.3的ip地址
    其他的規(guī)則連接也一樣這么設(shè)置.
    在下面就是FORWARD鏈,FORWARD鏈的默認(rèn)規(guī)則是DROP,所以我們就寫需要ACCETP(通過(guò))的鏈,對(duì)正在轉(zhuǎn)發(fā)鏈的監(jiān)控.
    開啟轉(zhuǎn)發(fā)功能,(在做NAT時(shí),FORWARD默認(rèn)規(guī)則是DROP時(shí),必須做)
    [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碎片數(shù)量,防止攻擊,允許每秒100個(gè)
    [root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
    設(shè)置ICMP包過(guò)濾,允許每秒1個(gè)包,限制觸發(fā)條件是10個(gè)包.
    [root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
    我在前面只所以允許ICMP包通過(guò),就是因?yàn)槲以谶@里有限制.
    二,配置一個(gè)NAT表放火墻
    1,查看本機(jī)關(guān)于NAT的設(shè)置情況
    [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已經(jīng)配置好了的(只是提供最簡(jiǎn)單的代理上網(wǎng)功能,還沒有添加防火墻規(guī)則).關(guān)于怎么配置NAT,參考我的另一篇文章
    當(dāng)然你如果還沒有配置NAT的話,你也不用清除規(guī)則,因?yàn)镹AT在默認(rèn)情況下是什么都沒有的
    如果你想清除,命令是
    [root@tp ~]# iptables -F -t nat
    [root@tp ~]# iptables -X -t nat
    [root@tp ~]# iptables -Z -t nat
    2,添加規(guī)則
    添加基本的NAT地址轉(zhuǎn)換,(關(guān)于如何配置NAT可以看我的另一篇文章),
    添加規(guī)則,我們只添加DROP鏈.因?yàn)槟J(rèn)鏈全是ACCEPT.
    防止外網(wǎng)用內(nèi)網(wǎng)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,(個(gè)人認(rèn)為沒有太大必要)
    例:
    禁止與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地址,和端口,以及基于什么協(xié)議,只要照著寫就行了.
    最后:
    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

    允許所有已經(jīng)建立的和相關(guān)的連接
    [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


    別忘了保存,不行就寫一部保存一次.你可以一邊保存,一邊做實(shí)驗(yàn),看看是否達(dá)到你的要求,
    上面的所有規(guī)則我都試過(guò),沒有問題.
    寫這篇文章,用了我將近1個(gè)月的時(shí)間.查找資料,自己做實(shí)驗(yàn),希望對(duì)大家有所幫助.如有不全及不完善的地方還請(qǐng)?zhí)岢?
    因?yàn)楸酒恼乱耘渲脼橹?關(guān)于IPTABLES的基礎(chǔ)知識(shí)及指令命令說(shuō)明等我會(huì)盡快傳上,當(dāng)然你可以去網(wǎng)上搜索一下,還是很多的.
    posted @ 2015-11-24 16:15 xzc 閱讀(214) | 評(píng)論 (0)編輯 收藏
         摘要: meta表修復(fù)一Java代碼  查看hbasemeta情況  hbase hbck  1.重新修復(fù)hbase meta表(根據(jù)hdfs上的regioninfo文件,生成meta表)  hbase hbck -fixMeta  2.重新將hbase m...  閱讀全文
    posted @ 2015-11-19 18:08 xzc 閱讀(1395) | 評(píng)論 (0)編輯 收藏

     echo "Cfoo'barxml" | sed "s/'/::/g" |  sed 's/::/\\:/g' |  sed "s/:/'/g"    替換單引號(hào)為 \'

     

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

    sed 替換單引號(hào)'

    echo "mmm'sss" > test
    cat test


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


    當(dāng)然還可以使用下面這兩種方法替換:
    sed s#\'#\"#g test   最外層使用#分隔,里面使用轉(zhuǎn)義單引號(hào),轉(zhuǎn)義雙引號(hào)
    sed "s/'/\"/g" test    最外層使用雙引號(hào),里面使用單引號(hào),轉(zhuǎn)義雙引號(hào)


    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 閱讀(1832) | 評(píng)論 (1)編輯 收藏
    shell中${}的妙用
     
    1. 截?cái)喙δ?/div>
    ${file#*/}:       拿掉第一條/及其左邊的字符串:dir1/dir2/dir3/my.file.txt
    ${file##*/}:    拿掉最后一條/及其左邊的字符串:my.file.txt
    ${file#*.}:       拿掉第一個(gè).及其左邊的字符串:file.txt
    ${file##*.}:    拿掉最后一個(gè).及其左邊的字符串:txt
    ${file%/*}:     拿掉最后條/及其右邊的字符串:/dir1/dir2/dir3
    ${file%%/*}: 拿掉第一條/及其右邊的字符串:(空值)
    ${file%.*}:    拿掉最后一個(gè).及其右邊的字符串:/dir1/dir2/dir3/my.file
    ${file%%.*}: 拿掉第一個(gè).及其右邊的字符串:/dir1/dir2/dir3/my
    記憶的方法為:
    [list]#是去掉左邊, ##最后一個(gè)
          %是去掉右邊, %%第一個(gè)
    2. 字符串提取 
    單一符號(hào)是最小匹配﹔兩個(gè)符號(hào)是最大匹配。
    ${file:0:5}:提取最左邊的 5 個(gè)字節(jié):/dir1
    ${file:5:5}:提取第 5 個(gè)字節(jié)右邊的連續(xù) 5 個(gè)字節(jié):/dir2
    3. 字符串替換
    ${file/dir/path}:將第一個(gè) dir 提換為 path:/path1/dir2/dir3/my.file.txt
    ${file//dir/path}:將全部 dir 提換為 path:/path1/path2/path3/my.file.txt
    4. 針對(duì)不同的變量狀態(tài)賦值(沒設(shè)定、空值、非空值):
    ${file-my.file.txt}: 若$file沒有設(shè)定,則使用my.file.txt作返回值。(空值及非空值時(shí)不作處理)
    ${file:-my.file.txt}:若$file沒有設(shè)定或?yàn)榭罩担瑒t使用my.file.txt作返回值。(非空值時(shí)不作處理)
    ${file+my.file.txt}: 若$file設(shè)為空值或非空值,均使用my.file.txt作返回值。(沒設(shè)定時(shí)不作處理)
    ${file:+my.file.txt}:若$file為非空值,則使用my.file.txt作返回值。(沒設(shè)定及空值時(shí)不作處理)
    ${file=my.file.txt}: 若$file沒設(shè)定,則使用my.file.txt作返回值,同時(shí)將$file 賦值為 my.file.txt。(空值及非空值時(shí)不作處理)
    ${file:=my.file.txt}:若$file沒設(shè)定或?yàn)榭罩担瑒t使用my.file.txt作返回值,同時(shí)將 $file 賦值為 my.file.txt。(非空值時(shí)不作處理)
    ${file?my.file.txt}: 若$file沒設(shè)定,則將my.file.txt輸出至 STDERR。(空值及非空值時(shí)不作處理)
    ${file:?my.file.txt}:若$file沒設(shè)定或?yàn)榭罩担瑒t將my.file.txt輸出至STDERR。(非空值時(shí)不作處理)
    注意: 
    ":+"的情況是不包含空值的.
    ":-", ":="等只要有號(hào)就是包含空值(null).
    5. 變量的長(zhǎng)度
    ${#file}
    6. 數(shù)組運(yùn)算
    A=(a b c def)
    ${A[@]} 或 ${A[*]} 可得到 a b c def (全部組數(shù))
    ${A[0]} 可得到 a (第一個(gè)組數(shù)),${A[1]} 則為第二個(gè)組數(shù)...
    ${#A[@]} 或 ${#A[*]} 可得到 4 (全部組數(shù)數(shù)量)
    ${#A[0]} 可得到 1 (即第一個(gè)組數(shù)(a)的長(zhǎng)度),${#A[3]} 可得到 3 (第四個(gè)組數(shù)(def)的長(zhǎng)度)
    posted @ 2015-10-29 16:18 xzc 閱讀(155) | 評(píng)論 (0)編輯 收藏

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

    以下來(lái)看看find命令忽略目錄查找的用法吧。

    例1,根據(jù)文件屬性查找:


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

    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,根據(jù)文件內(nèi)容查找:


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

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




    使用find命令在linux系統(tǒng)中查找文件時(shí),有時(shí)需要忽略某些目錄,可以使用 -prune 參數(shù)來(lái)進(jìn)行過(guò)濾。
    不過(guò)必須注意:要忽略的路徑參數(shù)要緊跟著搜索的路徑之后,否則該參數(shù)無(wú)法起作用。

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


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

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

    按照文件名來(lái)搜索則為:


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

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

    要忽略兩個(gè)以上的路徑如何處理?


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

    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

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

    查找某個(gè)文件包含內(nèi)容,以下語(yǔ)句可以解決目錄帶空格的問題:


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

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

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

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

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

    通過(guò)以上的例子,大家應(yīng)該可以掌握f(shuō)ind命令查找文件時(shí),忽略相關(guān)目錄的方法了。

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

    X509 文件擴(kuò)展名

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


    編碼 (也用于擴(kuò)展名)

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

    常用的擴(kuò)展名

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

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

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

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


    下載單個(gè)文件,默認(rèn)將輸出打印到標(biāo)準(zhǔn)輸出中(STDOUT)中

    curl http://www.centos.org

    通過(guò)-o/-O選項(xiàng)保存下載的文件到指定的文件中:
    -o:將文件保存為命令行中指定的文件名的文件中
    -O:使用URL中默認(rèn)的文件名保存文件到本地

    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

    同樣可以使用轉(zhuǎn)向字符">"對(duì)輸出進(jìn)行轉(zhuǎn)向輸出

    同時(shí)獲取多個(gè)文件

    1 curl -O URL1 -O URL2

    若同時(shí)從同一站點(diǎn)下載多個(gè)文件時(shí),curl會(huì)嘗試重用鏈接(connection)。

    通過(guò)-L選項(xiàng)進(jìn)行重定向
    默認(rèn)情況下CURL不會(huì)發(fā)送HTTP Location headers(重定向).當(dāng)一個(gè)被請(qǐng)求頁(yè)面移動(dòng)到另一個(gè)站點(diǎn)時(shí),會(huì)發(fā)送一個(gè)HTTP Loaction header作為請(qǐng)求,然后將請(qǐng)求重定向到新的地址上。
    例如:訪問google.com時(shí),會(huì)自動(dòng)將地址重定向到google.com.hk上。

    復(fù)制代碼
     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>
    復(fù)制代碼

    上述輸出說(shuō)明所請(qǐng)求的檔案被轉(zhuǎn)移到了http://www.google.com.hk。

    這是可以通過(guò)使用-L選項(xiàng)進(jìn)行強(qiáng)制重定向

    1 # 讓curl使用地址重定向,此時(shí)會(huì)查詢google.com.hk站點(diǎn)
    2 curl -L http://www.google.com

    斷點(diǎn)續(xù)傳

    通過(guò)使用-C選項(xiàng)可對(duì)大文件使用斷點(diǎn)續(xù)傳功能,如:

    復(fù)制代碼
    1 # 當(dāng)文件在下載完成之前結(jié)束該進(jìn)程
    2 $ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
    3 ##############             20.1%
    4 
    5 # 通過(guò)添加-C選項(xiàng)繼續(xù)對(duì)該文件進(jìn)行下載,已經(jīng)下載過(guò)的文件不會(huì)被重新下載
    6 curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
    7 ###############            21.1%
    復(fù)制代碼

    對(duì)CURL使用網(wǎng)絡(luò)限速
    通過(guò)--limit-rate選項(xiàng)對(duì)CURL的最大網(wǎng)絡(luò)使用進(jìn)行限制

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

    下載指定時(shí)間內(nèi)修改過(guò)的文件

    當(dāng)下載一個(gè)文件時(shí),可對(duì)該文件的最后修改日期進(jìn)行判斷,如果該文件在指定日期內(nèi)修改過(guò),就進(jìn)行下載,否則不下載。
    該功能可通過(guò)使用-z選項(xiàng)來(lái)實(shí)現(xiàn):

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

    CURL授權(quán)

    在訪問需要授權(quán)的頁(yè)面時(shí),可通過(guò)-u選項(xiàng)提供用戶名和密碼進(jìn)行授權(quán)

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

    從FTP服務(wù)器下載文件

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

    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服務(wù)器

    通過(guò) -T 選項(xiàng)可將指定的本地文件上傳到FTP服務(wù)器上

    復(fù)制代碼
    # 將myfile.txt文件上傳到服務(wù)器
    curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
    
    # 同時(shí)上傳多個(gè)文件
    curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com
    
    # 從標(biāo)準(zhǔn)輸入獲取內(nèi)容保存到服務(wù)器指定的文件中
    curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
    復(fù)制代碼

    獲取更多信息

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

    通過(guò)字典查詢單詞

    復(fù)制代碼
    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
    復(fù)制代碼

    為CURL設(shè)置代理

    -x 選項(xiàng)可以為CURL添加代理功能

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

     

    其他網(wǎng)站整理

    保存與使用網(wǎng)站cookie信息

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

    傳遞請(qǐng)求數(shù)據(jù)

    默認(rèn)curl使用GET方式請(qǐng)求數(shù)據(jù),這種方式下直接通過(guò)URL傳遞數(shù)據(jù)
    可以通過(guò) --data/-d 方式指定使用POST方式傳遞數(shù)據(jù)

    復(fù)制代碼
    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 # 也可以指定一個(gè)文件,將該文件中的內(nèi)容當(dāng)作數(shù)據(jù)傳遞給服務(wù)器端
    8 curl --data @filename https://github.api.com/authorizations
    復(fù)制代碼

    注:默認(rèn)情況下,通過(guò)POST方式傳遞過(guò)去的數(shù)據(jù)中若有特殊字符,首先需要將特殊字符轉(zhuǎn)義在傳遞給服務(wù)器端,如value值中包含有空格,則需要先將空格轉(zhuǎn)換成%20,如:

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

    在新版本的CURL中,提供了新的選項(xiàng) --data-urlencode,通過(guò)該選項(xiàng)提供的參數(shù)會(huì)自動(dòng)轉(zhuǎn)義特殊字符。

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

    除了使用GET和POST協(xié)議外,還可以通過(guò) -X 選項(xiàng)指定其它協(xié)議,如:

    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 閱讀(320) | 評(píng)論 (2)編輯 收藏

    方法一: 使用全局變量

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

    方法二: 把shell函數(shù)作為子程序調(diào)用,將其結(jié)果寫到子程序的標(biāo)準(zhǔn)輸出

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

    看到一篇關(guān)于函數(shù)返回值的好文章,分享一下: http://www.linuxjournal.com/content/return-values-bash-functions 
    posted @ 2015-09-21 10:20 xzc 閱讀(4442) | 評(píng)論 (2)編輯 收藏
         摘要: 12345678$# 是傳給腳本的參數(shù)個(gè)數(shù)$0 是腳本本身的名字$1 是傳遞給該shell腳本的第一個(gè)參數(shù)$2 是傳遞給該shell腳本的第二個(gè)參數(shù)$@ 是傳給腳本的所有參數(shù)的列表$* 是以一個(gè)單字符串顯示所有向腳本傳遞的參數(shù),與位置變量不同,參數(shù)可超過(guò)9個(gè)$$ 是腳本運(yùn)行的當(dāng)前進(jìn)程ID號(hào)$? 是顯示最后命令的退出狀態(tài),0表示沒有錯(cuò)誤,其他表示有錯(cuò)誤  閱讀全文
    posted @ 2015-09-15 20:07 xzc 閱讀(246) | 評(píng)論 (0)編輯 收藏
         摘要: #!/bin/sh #測(cè)試各種字符串比較操作。#shell中對(duì)變量的值添加單引號(hào),爽引號(hào)和不添加的區(qū)別:對(duì)類型來(lái)說(shuō)是無(wú)關(guān)的,即不是添加了引號(hào)就變成了字符串類型,#單引號(hào)不對(duì)相關(guān)量進(jìn)行替換,如不對(duì)$符號(hào)解釋成變量引用,從而用對(duì)應(yīng)變量的值替代,雙引號(hào)則會(huì)進(jìn)行替代#author:tenfyguo A="$1"B="$2" echo "輸入的原始值:A=$A,B=$B"&nb...  閱讀全文
    posted @ 2015-09-15 14:52 xzc 閱讀(2002) | 評(píng)論 (1)編輯 收藏
    僅列出標(biāo)題
    共32頁(yè): First 上一頁(yè) 2 3 4 5 6 7 8 9 10 下一頁(yè) Last 
    主站蜘蛛池模板: 国产成在线观看免费视频| 久久久国产精品无码免费专区| 亚洲综合av一区二区三区| 亚洲中文字幕乱码熟女在线| 18成禁人视频免费网站| 日日夜夜精品免费视频| 亚洲无线码一区二区三区| 久久精品国产亚洲AV高清热 | 97在线视频免费播放| 免费人成年激情视频在线观看| 久久精品国产亚洲AV果冻传媒| 亚洲已满18点击进入在线观看| a在线视频免费观看在线视频三区 a毛片成人免费全部播放 | 中文字幕无码不卡免费视频| 456亚洲人成影院在线观| 毛片免费视频在线观看| 成年性生交大片免费看| 亚洲爆乳无码专区www| 国产成人精品免费久久久久| 国产男女猛烈无遮挡免费视频网站 | 成年人视频免费在线观看| 亚洲色欲久久久久综合网| 91在线亚洲综合在线| 色老头永久免费网站| 亚洲女初尝黑人巨高清| 亚洲一日韩欧美中文字幕在线| 成年女人毛片免费视频| 亚洲天天在线日亚洲洲精| 亚洲中文字幕AV每天更新| 国产一卡2卡3卡4卡无卡免费视频| 手机在线看永久av片免费| 国产亚洲sss在线播放| 成年人免费网站在线观看| 久久久久亚洲精品无码网址色欲| 国产成人免费AV在线播放| 国产免费一级高清淫曰本片| 一级做受视频免费是看美女| 亚洲日韩中文在线精品第一 | a拍拍男女免费看全片| 亚洲AV无码专区在线亚| 一个人免费观看www视频在线|