给网站更新、替换文件的shell脚本

2018-06-26 49次浏览 发表评论

运维工作中经常需要给网站更新一些文件。每次手动操作太麻烦,写了一个小脚本用起来很方便:

vim file-update.sh
#!/bin/bash

web_dir="/data/wwwroot/www/"

C_31="\e[1;31m" #red
C_32="\e[1;32m" #green
C_33="\e[1;33m" #yellow
CE="\e[0m"

if [ -z $1 ]; then
    echo -e "${C_31}没有指定文件名${CE}"
    exit 1
fi

find ${web_dir} -name "$1" > $$
max_num=$(cat $$ | wc -l)

echo -e "${C_33}===================================================================================="
cat -n $$
echo -e ${CE}

#接收到Ctrl+C信号后删除临时文件,并退出
trap "rm -f $$; echo; exit 0" 2

while true
do
    read -p "输入文件行号:" file_reply
    if [ -z $file_reply ]; then
        echo -e "${C_33}未输入行号(默认:1)${CE}"
        num=1
        break
    else
        if [[ $file_reply -gt $max_num || $file_reply -eq 0 ]]; then
            echo -e "${C_31}行号错误${CE}"
            continue
        else
            num=$file_reply
            break
        fi
    fi
done

while true
do
    read -p "文件路径是否正确(Y/N):" url_reply
    case $url_reply in

    Y|y)
        chown tomcat:www $1
        update_file=$(sed -n ${num}p $$)
        mv -b -f -S _backup $1 ${update_file%/*}/
        if [ $? -eq 0 ]; then
            [ ! -e backup_file ] && mkdir backup_file
            mv -f ${update_file%/*}/${1}_backup backup_file
            echo -e "${C_32}更新成功!${CE}"
        fi
        break
    ;;

    N|n)
        echo -e "${C_33}退出...确认后重试!${CE}"
        break
    ;;

    *)
        echo -e "${C_31}需要输入'Y'或'N'${CE}"
    ;;

    esac
done

rm -f $$

使用方法:file-update.sh index.php

评论

随便说点,聊聊天~