多臺伺服器批量增加,修改crontab
阿新 • • 發佈:2019-01-26
shell指令碼
批量增加:
# Local Cluser
LOCAL="10.10.10.10"
# for local
crontab_cluster="$LOCAL"
# For Tmp
TMP_FILE="/tmp/crontab"
#定義陣列lines
# lines 陣列為需要新增的crontab內容 注:lines下標要從0開始
# lines[0]="" 是為與原記錄間隔空行,非必需
lines[0]=""
lines[1]="# crontab script"
lines[2]="#*/1 * * * * ..."
lines[3]="#*/2 * * * * ..."
# 將原crontab 內容寫入 $TMP_FILE 檔案中
DEPLAY_CRONTAB_CMD1="crontab -l > $TMP_FILE" # 將新增內容後的 $TMP_FILE 檔案內容重新寫入crontab
DEPLAY_CRONTAB_CMD3="crontab $TMP_FILE" # 定義需要進行批量操作的伺服器列表 hosts=$crontab_cluster for host in ${hosts} do (執行 $DEPLAY_CRONTAB_CMD1命令)
# 向 $TMP_FILE 檔案新增 lines陣列 內容 for ((i=0;i<${#lines[*]};i++)) do DEPLAY_CRONTAB_CMD2="echo \"${lines[i]}\" >> $TMP_FILE" (執行 $DEPLAY_CRONTAB_CMD2命令) done (執行 $DEPLAY_CRONTAB_CMD3命令) (檢查 $DEPLAY_CRONTAB_CMD3命令執行結果判斷是否繼續) done (刪除 TMP_FILE檔案)
批量修改:
# Local Cluser
LOCAL="10.10.10.10"
# for local
crontab_cluster="$LOCAL"
# For Tmp
TMP_FILE="/tmp/crontab"
# num 定義要修改內容所在行行數 lines定義該行修改後的內容 注:num lines的陣列下標要保持一致且從0開始 num[0]=5 //第五行 lines[0]="#*/1 * * * *..." //第五行的內容改為這個字串 num[1]=6 lines[1]="#*/2 * * * * ..." # 將原crontab 內容寫入 $TMP_FILE 檔案中
DEPLAY_CRONTAB_CMD1="crontab -l > $TMP_FILE" # 將新增內容後的 $TMP_FILE 檔案內容重新寫入crontab
DEPLAY_CRONTAB_CMD3="crontab $TMP_FILE" # 定義需要進行批量操作的伺服器列表 hosts=$crontab_cluster for host in ${hosts} do (執行 DEPLAY_CRONTAB_CMD1命令) # 修改 $TMP_FILE 檔案內容 for ((i=0;i<${#num[*]};i++)) do DEPLAY_CRONTAB_CMD2="sed -i \"${num[i]}c ${lines[i]}\" $TMP_FILE" (執行 DEPLAY_CRONTAB_CMD2命令) done (執行 $DEPLAY_CRONTAB_CMD3命令) (檢查 $DEPLAY_CRONTAB_CMD3命令執行結果判斷是否繼續) done (刪除
TMP_FILE檔案)
附:原始碼下載
DEPLAY_CRONTAB_CMD1="crontab -l > $TMP_FILE" # 將新增內容後的 $TMP_FILE 檔案內容重新寫入crontab
DEPLAY_CRONTAB_CMD3="crontab $TMP_FILE" # 定義需要進行批量操作的伺服器列表 hosts=$crontab_cluster for host in ${hosts} do (執行 $DEPLAY_CRONTAB_CMD1命令)
# 向 $TMP_FILE 檔案新增 lines陣列 內容 for ((i=0;i<${#lines[*]};i++)) do DEPLAY_CRONTAB_CMD2="echo \"${lines[i]}\" >> $TMP_FILE" (執行 $DEPLAY_CRONTAB_CMD2命令) done (執行 $DEPLAY_CRONTAB_CMD3命令) (檢查 $DEPLAY_CRONTAB_CMD3命令執行結果判斷是否繼續) done (刪除 TMP_FILE檔案)
批量修改:
# num 定義要修改內容所在行行數 lines定義該行修改後的內容 注:num lines的陣列下標要保持一致且從0開始 num[0]=5 //第五行 lines[0]="#*/1 * * * *..." //第五行的內容改為這個字串 num[1]=6 lines[1]="#*/2 * * * * ..." # 將原crontab 內容寫入 $TMP_FILE 檔案中
DEPLAY_CRONTAB_CMD1="crontab -l > $TMP_FILE" # 將新增內容後的 $TMP_FILE 檔案內容重新寫入crontab
DEPLAY_CRONTAB_CMD3="crontab $TMP_FILE" # 定義需要進行批量操作的伺服器列表 hosts=$crontab_cluster for host in ${hosts} do (執行 DEPLAY_CRONTAB_CMD1命令) # 修改 $TMP_FILE 檔案內容 for ((i=0;i<${#num[*]};i++)) do DEPLAY_CRONTAB_CMD2="sed -i \"${num[i]}c ${lines[i]}\" $TMP_FILE" (執行 DEPLAY_CRONTAB_CMD2命令) done (執行 $DEPLAY_CRONTAB_CMD3命令) (檢查 $DEPLAY_CRONTAB_CMD3命令執行結果判斷是否繼續) done (刪除