天天看點

shell批量修改檔案參數,修改ssh逾時端口時間,采用數組方式對應修改

#!/bin/bash
#腳本自動替換參數
setcs=(
"ClientAliveInterval"
"ClientAliveCountMax"
)
upsetcs=(
"ClientAliveInterval 60"
"ClientAliveCountMax 5"
)
suzu=${#setcs[*]} ; echo "修改檔案總參數個為:$suzu"
# 由于數組角标預設從0開始,數組角标數數到元素個數會多出一個空的,才用小數組個數6==》6-1=0~5
phpini="/etc/ssh/sshd_config"
if [ ! -e $phpini.back ]
then
     echo "備份"
     cp $phpini $phpini.back
   else
     echo "備份檔案存在:$phpini.back"
fi
for((i=0;i<$suzu;i++))
  do
    set=${setcs[$i]} ; upset=${upsetcs[$i]}
    NR=`cat -n $phpini | grep "$set" | awk -F" " '{print $1}'` ; echo "行資訊: $NR"

    if [[ ${NR} =~ ^[0-9]+ ]]
     then
         echo "$set   +++++> 參數更新: $upset
         -------------------------------------------------------------"
         sed -i "$NR a $upset" $phpini
         sed -i "$NR d" $phpini
         echo "修改後的資訊:";  cat $phpini | grep "$upset"
     else
         echo "$NR 沒有擷取到行 $setcs 退出修改"
     fi
 done
systemctl restart sshd
# wget www.eisc.cn/file/shell/sedfile.sh