我是一名初級系統管理員。我問這個問題的原因是因為我們這裡沒有精通腳本編寫的高級系統管理員。總部的高級人員太忙了,沒有時間做這樣的事情。
我的場景是這樣的。我必須經常運行三個腳本來部署應用程式。這些腳本是由高級系統管理員編寫的。一般來說,事情進展順利,沒有錯誤。但是,我必須照顧他們以獲取意見。 :(
在這些腳本的某些部分中,有些部分我必須輸入「是」或「否」。我的答案永遠不會改變,除非前一部分失敗,然後我選擇“否”,它會說“建置失敗”。
我運行的基本上有這些部分:
1 - 透過 SSH 連接到部署伺服器
2 - 編輯檔案中的一個小字串(指定伺服器特定資訊)
3 - 運行腳本 A,它基本上將部署中的所有檔案 scps 到目標伺服器。我必須在這裡提供的唯一輸入是在最後。它詢問目標是否顯示正確的日期,如果我說是,則建置成功。
4 - 也從部署伺服器執行腳本 B,這需要一些特定訊息,例如:
./scriptB XYZ 其中 X、Y、Z 的變化取決於目標伺服器資訊。
腳本 B 有一些問題,例如“您想要執行此操作還是放棄此操作”,答案保持不變。有時也會出現 ANT 錯誤,因此它希望我點擊“1”直到腳本繼續。
5 - 運行腳本 C,它與腳本 B 非常相似。
我是腳本新手,但如果有人可以告訴我或給我一個想法如何做到這一點,那就太好了。我想也許我可以使用expect。
更好的是,如果我只需在 Windows 筆記型電腦上點擊某個 EXE,它就可以執行所有操作。這可能嗎?
答案1
聽起來你應該看兩件事:
- 編輯舊腳本以自動執行一些檢查(例如時間戳檢查),或刪除提示(查找
read
命令)並使用預設值進行回答。 - 使用專為此任務設計的工具,例如安西布爾。
如果您想學習新東西並提高您的系統管理員簡歷,我會考慮第二個選項,儘管第一個選項在短期內應該可以正常工作!
如果您從我提到的第一個選項開始,請嘗試使腳本 A 不需要提示 -date
也許使用該函數來獲取當前日期,並自動進行檢查。如果您要與剛剛複製的文件進行比較的日期,您應該能夠使用 或 等工具find
來ls
獲取該資訊。
exit
執行腳本 C,在通常點擊 的地方輸入指令應該很簡單CtrlC。
首先,記得在非關鍵盒子上進行測試!您不想在修改舊腳本時破壞生產設定...