bash中的重定向探究(UNIX or Linux shell)
###GNU bash 4.3.1###
###Ubuntu14.04###
###2020/11/19###
1.寫一個簡單bash指令碼,或者叫shell指令碼用於測試重定向。檔名為a.sh,不廢話,上程式碼。
#!/bin/bash while ((1)) //此處必須雙括號 do echo "hello,world\n" echo "$[5/0]" done
2.測試常見的輸出重定向。
執行命令 ./a.sh
預設標準輸出和標準出錯都是顯示器,所以得到上圖的兩條輸出
現在將標準輸出重定向到文字檔案1.txt
執行命令 ./a.sh >1.txt
只有一行錯誤輸出了,標準輸出被重定向到檔案中了
現將標準輸出和標準出錯都重定向到檔案1.txt
執行命令./a.sh > 1.txt 2>&1 #命令列從左至右解釋(2>&1中2和1均為描述符)
執行命令後無輸出,可見全部重定向了
執行cat -n 1.txt 檢視兩行都在文字檔案中,重定向成功。
參考Bash官方文件:https://www.gnu.org/software/bash/manual/bash.html#Duplicating-File-Descriptors
可知,可以利用重定向的知識來開啟TCP/UDP socket,下面用兩臺主機進行驗證(均為虛擬機器)。
###Ubuntu14.04&&&Kali4.15.0###(TCP驗證)
1.ip地址(Ubuntu192.168.100.***)(Kali 192.168.100.181)
2.Kali端先用nc開啟埠,監聽TCP連線,使用埠11111
3.Ubuntu主動連線,併發送“hello,world!”
4.Kali端輸出helloworld!
5.使用wireshark分析連線過程(三次握手)
以及兩次揮手的資料(不上圖了)
6.檢視資料報(資料明文傳輸)
############UDP驗證############
1.Kali nc以UDP方式監聽11111埠
2.Ubuntu以UDP方式傳送資料
3.Kali端接收結果:
(與TCP方式不同的是,傳送完資料後nc未返回,還處於接收資料的模式,但是並不能再次收到資料。此處大家可以繼續探究)
4.開啟wireshark進行分析。
只發現產生了1個數據報,與TCP建立連線的方式完全不同。
觀察資料:
依舊是明文傳輸。