1. 程式人生 > 實用技巧 >bash中的重定向探究(UNIX or Linux shell)

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建立連線的方式完全不同。

觀察資料:

依舊是明文傳輸。