用指令碼來講一個技術生活的故事 (r9筆記第32天)
阿新 • • 發佈:2022-05-04
對於生活,用文字表達是一種非常好的方式,作為技術人,我決定使用一個指令碼來對映技術生活中的一些小故事,也是在今天突然想到的。
對的,你沒有看錯,就是下面這個命令。但凡接觸過Linux系統,這個命令還是很熟悉的,不熟悉也沒有關係,就是檢視伺服器的磁碟空間。
df -h
我們像對待藝術品一樣圍著這個命令,認真的看看它,為什麼叫df,想必是Disk Filesystem的意思吧,而為什麼是-h選項,你還真想對了,其實-k -g等選項
-a 顯示所有檔案系統的磁碟使用情況,包括0塊(block)的檔案系統,如/proc檔案系統。
-k 以k位元組為單位顯示。
-i 顯示i節點資訊,而不是磁碟塊。
-t 顯示各指定型別的檔案系統的磁碟空間使用情況。
-x 列出不是某一指定型別檔案系統的磁碟空間使用情況(與t選項相反)。
-T 顯示檔案系統型別。
當然我們的重點不是這裡,我們的工作需要檢視伺服器的磁碟空間情況,所以我們登入伺服器,然後在伺服器段執行這個命令就可以看到了。
後來,網路進行了隔離,我們不能直接連線到這個伺服器了,我們有了中控機,堡壘機,需要輸入token,動態口令等。登入之後我們才有許可權連線到伺服器,當然我們使用的還是df -h的命令。
每天登入到伺服器多次,幾十次,上百次,發現真是一件體力活,能不能簡單一些,我們發現可以使用ssh來簡單實現,ssh登入後,直接傳送df -h的命令即可。
就像下面的形式:
ssh 10.127.133.45 "df -h"
ssh 10.127.133.45 "df -h"
ssh 10.127.133.46 "df -h"
這樣確實能夠實現我們的需求,而且本身來說也沒有什麼問題,如果嚴格來看,就是可以重構一下,硬編碼的痕跡太重了。這個指令碼讓人看到還不得笑話。
於是我們改進一下:
我們寫了一個shell指令碼如下,當然還用到了function
function ssh_df_h
{
ssh $1 "df -h"
}
ssh_df_h 10.127.133.45
ssh_df_h 10.127.133.46
function ssh_cmd
{
ssh $1 "$2"
}
ssh_cmd 10.127.133.45 "df -h"
ssh_cmd 10.127.133.46 "df -h"
這個時候指令碼看起來更加靈活了。你也對伺服器列表做了一層定製,讓這個指令碼看起來更加高大上。看起來工作還是挺完美的了。我們自己用了下感覺還不錯,然後就推廣到更多的部門去使用。這個對我們也是蠻有成就感的。
然後沒幾天就出了一個問題,究其原因就是指令碼的呼叫方式如下:
ssh_cmd 10.127.133.45 "rm xxxx"