用指令碼來講一個技術生活的故事
對於生活,用文字表達是一種非常好的方式,作為技術人,我決定使用一個指令碼來對映技術生活中的一些小故事,也是在今天突然想到的。
對的,你沒有看錯,就是下面這個命令。但凡接觸過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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一個shell 指令碼用來同步表用的指令碼
- 一個故事看懂CPU的SIMD技術
- 一個故事看懂程式間通訊技術
- 一個故事講完CPU的工作原理
- 指令碼的故事(2)指令碼
- 指令碼的故事(4)指令碼
- 一個很好的指令碼,用來顯示cbo的統計資訊指令碼
- 一半技術一半生活
- 高階Bash指令碼程式設計指南 一個對指令碼程式設計技術的深入探討指令碼程式設計
- 區塊鏈技術與應用:未來的一場技術革命區塊鏈
- 我們始終不能只靠技術來生活
- 讓我們來用php編寫一個搶購商品指令碼PHP指令碼
- 發一個指令碼來湊數的(obs1.2)指令碼
- 用 Promise 描述一個悲傷的故事Promise
- 用UI講故事,表達情感和創造個性UI
- 用資料也能講故事?
- 新技術頻現NABShowShanghai,科技引領未來生活AI
- 從難民到Uber技術長:一個亞裔倖存者的故事
- 7 個日常實用的 Shell 拿來就用指令碼例項!指令碼
- 用sql,shell來描述生活中要電話號碼的幾個場景SQL
- 記一次講故事機器人的開發-我有故事,讓機器人來讀機器人
- 微博春晚背後的技術故事
- 從《旅行串串》看小遊戲如何講述一個好的故事遊戲
- 深入挖掘Windows指令碼技術(轉)Windows指令碼
- 如何在Rogue-Like遊戲裡講好一個故事?遊戲
- 一個還算可以用的啟動指令碼指令碼
- 【趣話計算機底層技術】一個故事看懂各種鎖計算機
- 《用資料講故事》讀書分享
- 《用資料講故事》亞馬遜書評亞馬遜
- 盤點Java技術在生活中的10大應用!Java
- 把MyBatis當專案一樣,講透原始碼的技術書籍!MyBatis原始碼
- Web發展簡史(精編故事版,賢來給你講故事)Web
- 《Arise:一個平凡故事》Polygon:一個悲喜交加的平凡故事Go
- IBM:未來五年改變人類生活的五項技術IBM
- WebSocket的故事(一)—— WebSocket的由來Web
- 技術改變生活方式
- 一個awk if 巢狀 if 的指令碼巢狀指令碼
- mysql的一個備份指令碼MySql指令碼