用指令碼來講一個技術生活的故事
對於生活,用文字表達是一種非常好的方式,作為技術人,我決定使用一個指令碼來對映技術生活中的一些小故事,也是在今天突然想到的。
對的,你沒有看錯,就是下面這個命令。但凡接觸過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"
一下子感覺我們的生活就解放了很多,配置了網路信任,我們不用每次都苦逼的輸入密碼,每次輸入各種火星文密碼也夠折騰的。原來生活可以這麼簡單。
後來工作任務慢慢重了,交到手頭的伺服器多了,比如我們就說有2臺。這下好了,我們只需要對指令碼做一些簡單的改進就可以了,比如下面的方式。
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"
啊,怎麼執行了一個刪除命令,這個時候伺服器上的檔案都被刪了。
然後指令碼完全禁用,調整了網路,這個時候我們在伺服器上只df -h都很難了,而且設定了更多更加嚴格的安全策略,可以堪稱史上最xxxx的。
突然我們發現竟然一夜回到解放前。這會不會是一個迴圈?
對的,你沒有看錯,就是下面這個命令。但凡接觸過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"
一下子感覺我們的生活就解放了很多,配置了網路信任,我們不用每次都苦逼的輸入密碼,每次輸入各種火星文密碼也夠折騰的。原來生活可以這麼簡單。
後來工作任務慢慢重了,交到手頭的伺服器多了,比如我們就說有2臺。這下好了,我們只需要對指令碼做一些簡單的改進就可以了,比如下面的方式。
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"
啊,怎麼執行了一個刪除命令,這個時候伺服器上的檔案都被刪了。
然後指令碼完全禁用,調整了網路,這個時候我們在伺服器上只df -h都很難了,而且設定了更多更加嚴格的安全策略,可以堪稱史上最xxxx的。
突然我們發現竟然一夜回到解放前。這會不會是一個迴圈?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2120319/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一個故事看懂CPU的SIMD技術
- 一個故事看懂程式間通訊技術
- 一個故事講完CPU的工作原理
- 讓我們來用php編寫一個搶購商品指令碼PHP指令碼
- 區塊鏈技術與應用:未來的一場技術革命區塊鏈
- 7 個日常實用的 Shell 拿來就用指令碼例項!指令碼
- 我們始終不能只靠技術來生活
- 用 Promise 描述一個悲傷的故事Promise
- 用UI講故事,表達情感和創造個性UI
- 用個通俗的例子講一講死鎖
- 一個小故事,講透精益管理本質!
- 新技術頻現NABShowShanghai,科技引領未來生活AI
- 一個用於生成大量mac地址的python指令碼MacPython指令碼
- 老爸講的故事
- 新VR潮,又一個“狼來了”的故事?VR
- 記一次講故事機器人的開發-我有故事,讓機器人來讀機器人
- 分享兩個實用的shell指令碼指令碼
- 把MyBatis當專案一樣,講透原始碼的技術書籍!MyBatis原始碼
- IBM:未來五年改變人類生活的五項技術IBM
- 【趣話計算機底層技術】一個故事看懂各種鎖計算機
- 9個實用shell指令碼指令碼
- 盤點Java技術在生活中的10大應用!Java
- 用Jmeter編寫一個較複雜的測試指令碼JMeter指令碼
- 一個分詞指令碼分詞指令碼
- 《十三機兵防衛圈》用好的方法講了一個好故事
- 從《旅行串串》看小遊戲如何講述一個好的故事遊戲
- 用python寫一個自動化盲註指令碼Python指令碼
- 講一個抓住短視訊本地生活紅利創業的例子創業
- 講述:一個月薪12000的北京程式設計師的真實生活程式設計師
- 如何在Rogue-Like遊戲裡講好一個故事?遊戲
- 《Arise:一個平凡故事》Polygon:一個悲喜交加的平凡故事Go
- 一個方便 LeetCode 複習的指令碼LeetCode指令碼
- 用一個通俗的例子講清楚APIAPI
- Web發展簡史(精編故事版,賢來給你講故事)Web
- Shell指令碼應用兩個例子指令碼
- WebSocket的故事(一)—— WebSocket的由來Web
- LUA指令碼虛擬機器逃逸技術分析指令碼虛擬機
- 五個實用的SQL Server PowerShell指令碼OMSQLServer指令碼
- 講故事的餛飩仙人