linux安裝groovy
linux系統安裝groovy環境
1 2 3 4 |
curl -s get.sdkman.io | bash source "$HOME/.sdkman/bin/sdkman-init.sh" sdk install groovy groovy -version |
linux系統安裝groovy環境
1 2 3 4 |
curl -s get.sdkman.io | bash source "$HOME/.sdkman/bin/sdkman-init.sh" sdk install groovy groovy -version |
網站升級httsp后,用curl訪問,長時間不返回結果,報ssl handshake 協議錯誤,具體如下。
原因是curl版本太舊,可以使用curl的--sslv3參數,或者升級curl本本。
$ curl -v https://www.264.cn/shengqi/ --user-agent "Mozilla/5.0" --silent
* timeout on name lookup is not supported
* Trying 47.52.250.55...
* TCP_NODELAY set
* Connected to www.264.cn (47.52.250.55) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
} [5 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* Unknown SSL protocol error in connection to www.264.cn:443
* Curl_http_done: called premature == 1
* stopped the pause stream!
* Closing connection 0
tcpdump過濾HTTP的GET請求:
sudo tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
tcpdump過濾HTTP的POST請求:
sudo tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'
tcpdump過濾HTTP的請求和響應頭信息,以及請求和響應消息體信息:
tcpdump -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
tcpdump -X -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
HEAD :當前活躍分支的游標,可以用 checkout 命令改變 HEAD 指向的位置。形象的記憶就是:你現在在哪兒,HEAD 就指向哪兒,所以 Git 才知道你在那兒!
master: 首次創建倉庫時默認分支的名字,在大多數情況下,master是指主干分支。
origin: 默認的遠程倉庫的名字。
HEAD是git內置的定義好的特定含義功能,不可以修改。master,origin都是常用的公共命名方式,可以有自己的定義。
ps:
FETCH_HEAD: 是一個版本鏈接,記錄在本地的一個文件中,指向著目前已經從遠程倉庫取下來的分支的末端版本
參考
http://marklodato.github.io/visual-git-guide/index-zh-cn.html
tcpdump 是 Linux 下的抓包工具,使用參數比較多,輸出條目比較細。
1 2 3 |
tcpdump [ -adeflnNOpqStvx ] [ -c 數量 ] [ -F 文件名 ] [ -i 網絡接口 ] [ -r 文件名] [ -s snaplen ] [ -T 類型 ] [ -w 文件名 ] [表達式 ] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
-A:以ASCII編碼打印每個報文(不包括鏈路層的頭),這對分析網頁來說很方便; -a:將網絡地址和廣播地址轉變成名字; -c<數據包數目>:在收到指定的包的數目后,tcpdump就會停止; -C:用于判斷用 -w 選項將報文寫入的文件的大小是否超過這個值,如果超過了就新建文件(文件名后綴是1、2、3依次增加); -d:將匹配信息包的代碼以人們能夠理解的匯編格式給出; -dd:將匹配信息包的代碼以c語言程序段的格式給出; -ddd:將匹配信息包的代碼以十進制的形式給出; -D:列出當前主機的所有網卡編號和名稱,可以用于選項 -i; -e:在輸出行打印出數據鏈路層的頭部信息; -f:將外部的Internet地址以數字的形式打印出來; -F<表達文件>:從指定的文件中讀取表達式,忽略其它的表達式; -i<網絡界面>:監聽主機的該網卡上的數據流,如果沒有指定,就會使用最小網卡編號的網卡(在選項-D可知道,但是不包括環路接口),linux 2.2 內核及之后的版本支持 any 網卡,用于指代任意網卡; -l:如果沒有使用 -w 選項,就可以將報文打印到 標準輸出終端(此時這是默認); -n:顯示ip,而不是主機名; -N:不列出域名; -O:不將數據包編碼最佳化; -p:不讓網絡界面進入混雜模式; -q:快速輸出,僅列出少數的傳輸協議信息; -r<數據包文件>:從指定的文件中讀取包(這些包一般通過-w選項產生); -s<數據包大小>:指定抓包顯示一行的寬度,-s0表示可按包長顯示完整的包,經常和-A一起用,默認截取長度為60個字節,但一般ethernet MTU都是1500字節。所以,要抓取大于60字節的包時,使用默認參數就會導致包數據丟失; -S:用絕對而非相對數值列出TCP關聯數; -t:在輸出的每一行不打印時間戳; -tt:在輸出的每一行顯示未經格式化的時間戳記; -T<數據包類型>:將監聽到的包直接解釋為指定的類型的報文,常見的類型有rpc (遠程過程調用)和snmp(簡單網絡管理協議); -v:輸出一個稍微詳細的信息,例如在ip包中可以包括ttl和服務類型的信息; -vv:輸出詳細的報文信息; -x/-xx/-X/-XX:以十六進制顯示包內容,幾個選項只有細微的差別,詳見man手冊; -w<數據包文件>:直接將包寫入文件中,并不分析和打印出來; expression:用于篩選的邏輯表達式; |
表達式是一個邏輯表達式,tcpdump利用它作為過濾報文的條件,如果一個報文滿足表達式的條件,則這個報文將會被捕獲。如果沒有給出任何條件,則網絡上所有的信息包將會被截獲。
在表達式中一般如下幾種類型的關鍵字:
例如,
host 210.27.48.2,指明 210.27.48.2是一臺主機,net 202.0.0.0 指明202.0.0.0是一個網絡地址,port 23 指明端口號是23。
如果沒有指定類型,缺省的類型是host.
例如,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的網絡地址是202.0.0.0 。如果沒有指明方向關鍵字,則缺省是src or dst關鍵字。
Fddi指明是在FDDI(分布式光纖數據接口網絡)上的特定的網絡協議,實際上它是"ether"的別名,fddi和e ther具有類似的源地址和目的地址,所以可以將fddi協議包當作ether的包進行處理和分析。
其他的幾個關鍵字就是指明了監聽的包的協議內容。如果沒有指定任何協議,則tcpdump將會監聽所有協議的信息包。
非運算 'not ' '! '
與運算 'and','&&'
或運算 'or' ,'||'
這些關鍵字可以組合起來構成強大的組合條件來滿足人們的需要,下面舉幾個例子來說明。
除了這三種類型的關鍵字之外,其他重要的關鍵字如下:gateway, broadcast,less,greater。
想要截獲所有210.27.48.1 的主機收到的和發出的所有的數據包:
tcpdump host 210.27.48.1
想要截獲主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通信,使用命令
tcpdump host 210.27.48.1 and \(210.27.48.2 or 210.27.48.3\)
如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包,使用命令:
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令:
tcpdump tcp port 23 host 210.27.48.1
輸出結果介紹
下面我們介紹幾種典型的tcpdump命令的輸出信息
數據鏈路層頭信息
使用命令tcpdump --e host ice
ice 是一臺裝有linux的主機,她的MAC地址是0:90:27:58:af:1a
H219是一臺裝有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5b:46
命令的輸出結果如下所示:
21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice.telnet 0:0(0) ack 22535 win 8760 (DF)
分析:
21:50:12 是顯示的時間
847509 是ID號
eth0 < 表示從網絡接口eth0 接受該數據包
eth0 > 表示從網絡接口設備發送數據包
8:0:20:79:5b:46 是主機H219的MAC地址,它表明是從源地址H219發來的數據包
0:90:27:58:af:1a 是主機ICE的MAC地址,表示該數據包的目的地址是ICE
ip 是表明該數據包是IP數據包,
60 是數據包的長度,
h219.33357 > ice.telnet 表明該數據包是從主機H219的33357端口發往主機ICE的TELNET(23)端口
ack 22535 表明對序列號是222535的包進行響應
win 8760 表明發送窗口的大小是8760
ARP包的TCPDUMP輸出信息
使用命令#tcpdump arp
得到的輸出結果是:
22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)
分析:
22:32:42 時間戳
802509 ID號
eth0 > 表明從主機發出該數據包
arp 表明是ARP請求包
who-has route tell ice 表明是主機ICE請求主機ROUTE的MAC地址
0:90:27:58:af:1a 是主機ICE的MAC地址。
TCP包的輸出信息
用TCPDUMP捕獲的TCP包的一般輸出信息是:
1 |
src > dst: flags data-seqno ack window urgent options |
src > dst 表明從源地址到目的地址
flags 是TCP包中的標志信息,S 是SYN標志, F(FIN), P(PUSH) , R(RST) "."(沒有標記)
data-seqno 是數據包中的數據的順序號
ack 是下次期望的順序號
window 是接收緩存的窗口大小
urgent 表明數據包中是否有緊急指針
options 是選項
1 |
route.port1 > ice.port2: udp lenth |
UDP十分簡單,上面的輸出行表明從主機ROUTE的port1端口發出的一個UDP數據包到主機ICE的port2端口,類型是UDP, 包的長度是lenth
wireshark查看
要讓wireshark能分析tcpdump的包,關鍵的地方是 -s 參數, 還有要保存為-w文件,例如下面的例子:
1 2 |
./tcpdump -i eth0 -s 0 -w SuccessC2Server.pcap host 192.168.1.20 # 抓該主機的所有包,在wireshark中過濾 ./tcpdump -i eth0 'dst host 239.33.24.212' -w raw.pcap # 抓包的時候就進行過濾 |
wireshark的過濾,很簡單的,比如:
tcp.port eq 5541
ip.addr eq 192.168.2.1
過濾出來后, 用fllow tcp 查看包的內容。
device eth0/eth1 entered promiscuous mode
message日志中提示:
kernel: device eth0 entered promiscuous mode
kernel: device eth0 left promiscuous mode
網卡進入了混雜模式。一般對通信進行抓包分析時進入混雜模式(tcpdump)。(默認網卡啟用了混雜模式的)
關閉混雜模式:ifconfig eth0 -promisc
啟用混雜模式:ifconfig eth0 promisc
TCP協議的KeepAlive機制與HeartBeat心跳包:http://www.nowamagic.net/academy/detail/23350382
TCP Keepalive HOWTO:http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/
參考
http://xstarcd.github.io/wiki/shell/tcpdump.html
https://my.oschina.net/xianggao/blog/678644
gd
跳轉到局部函數定義.
gD
跳轉到全局函數定義.
g*
向下搜索光標所在單詞 ( 當光標在 'rain' 會查找 'rainbow').
g#
向上搜索光標所在單詞
gg
跳轉到第一行
G
跳轉到最后一行
查看后臺日至看到如下內容:
117.21.176.241 - - [13/Oct/2015:16:14:34 +0800] "POST / HTTP/1.1" "-" 200 53156 [email protected](base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOztwcmludCgiaGFvcmVuIik7O2VjaG8oInw8LSIpO2RpZSgpOw== "-" "-"
這段內容是有人在掃面后臺,執行eval一句話攻擊,想知道它干什么,base64_decode這個內容。
decode時注意POST里的%要還原回url_encode前的字符。例如,把%2B和%3D用urldecode()函數還原分別是+號和=號
這段代碼還原后的內容是:
1 2 3 4 5 6 7 |
@ini_set("display_errors","0"); @set_time_limit(0); @set_magic_quotes_runtime(0); echo("->|"); ;print("haoren"); ;echo("|<-"); die(); |
1. linux curl抓取網頁:
抓取百度:
curl http://www.baidu.com
如發現亂碼,可以使用iconv轉碼:
curl http://iframe.ip138.com/ic.asp|iconv -fgb2312
iconv的用法請參閱:在Linux/Unix系統下用iconv命令處理文本文件中文亂碼問題
2. Linux curl使用代理:
linux curl使用http代理抓取頁面:
curl -x 111.95.243.36:80 http://iframe.ip138.com/ic.asp|iconv -fgb2312
curl -x 111.95.243.36:80 -U aiezu:password http://www.baidu.com
使用socks代理抓取頁面:
curl --socks4 202.113.65.229:443 http://iframe.ip138.com/ic.asp|iconv -fgb2312
curl --socks5 202.113.65.229:443 http://iframe.ip138.com/ic.asp|iconv -fgb2312
代理服務器地址可以從爬蟲代理上獲取。
3. linux curl處理cookies
接收cookies:
curl -c /tmp/cookies http://www.baidu.com #cookies保存到/tmp/cookies文件
發送cookies:
curl -b "key1=val1;key2=val2;" http://www.baidu.com #發送cookies文本
curl -b /tmp/cookies http://www.baidu.com #從文件中讀取cookies
4. linux curl發送數據:
linux curl get方式提交數據:
curl -G -d "name=value&name2=value2" http://www.baidu.com
linux curl post方式提交數據:
curl -d "name=value&name2=value2" http://www.baidu.com #post數據
curl -d [email protected]/tmp/txt http://www.baidu.com #post文件
以表單的方式上傳文件:
curl -F [email protected]/tmp/me.txt http://www.aiezu.com
相當于設置form表單的method="POST"和enctype='multipart/form-data'兩個屬性。
5. linux curl http header處理:
設置http請求頭信息:
curl -A "Mozilla/5.0 Firefox/21.0" http://www.baidu.com #設置http請求頭User-Agent
curl -e "http://pachong.org/" http://www.baidu.com #設置http請求頭Referer
curl -H "Connection:keep-alive \n User-Agent: Mozilla/5.0" http://www.aiezu.com
設置http響應頭處理:
curl -I http://www.aiezu.com #僅僅返回header
curl -D /tmp/header http://www.aiezu.com #將http header保存到/tmp/header文件
6. linux curl認證:
curl -u aiezu:password http://www.aiezu.com #用戶名密碼認證
curl -E mycert.pem https://www.baidu.com #采用證書認證
7. 其他:
curl -# http://www.baidu.com #以“#”號輸出進度條
curl -o /tmp/aiezu http://www.baidu.com #保存http響應到/tmp/aiezu
8. 經驗
linux 使用curl小經驗教訓:
http請求地址的url要使用""括起來。當有存在多個參數使用&連接時可能會出錯。
原文地址:http://www.cnblogs.com/davidwang456/p/4266867.html
# 總核數 = 物理CPU個數 X 每顆物理CPU的核數
# 總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核數 X 超線程數
# 查看物理CPU個數
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每個物理CPU中core的個數(即核數)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看邏輯CPU的個數
cat /proc/cpuinfo| grep "processor"| wc -l
# 查看CPU信息(型號)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
# 查看內 存信息
cat /proc/meminfo
free -g
# getconf LONG_BIT
32
(說明當前CPU運行在32bit模式下, 但不代表CPU不支持64bit)
1.設置共享文件,把訪問地址復制到chrome打開網頁
2.在下載處點右鍵,復制下載地址
3.在SSH里輸入
# wget -O 文件名.zip "把復制地址粘貼“
文件名.zip 可以任意命名,可以和下載的文件名不一樣
例如我要下載文件名為:web.tar.gz
復制的地址:
http://www.baidupcs.com/file/d1e5fed96b131ee7e608d14a673edf42?fid=3373459577-250528-1657895455&time=1362149161&sign=FDTA-DCb740ccc5511e5e8fedcff06b081203-vTjW3QmCTiqMtarZZQwikQeGfb8%3D&expires=8h&sh=1&response-cache-control=private
完整命令:
# wget -O name.zip "http://www.baidupcs.com/file/d1e5fed96b131ee7e608d14a673edf42?fid=3373459577-250528-1657895455&time=1362149161&sign=FDTA-DCb740ccc5511e5e8fedcff06b081203-vTjW3QmCTiqMtarZZQwikQeGfb8%3D&expires=8h&sh=1&response-cache-control=private"
下載完后文件為 name.zip
# unzip name.zip #解壓縮后得到你打包在web.tar.gz里的文件
近期評論