背景:挂机盒一般公司内生产服务器的web上线更新是由运维人员来完成的,但是不排除有些公司管理混乱,开发自己上传文件到服务器,比如本人之前所在的公司就出现这样的奇葩事,更新方法有很多种,服务多了用自动化运维工具,比如ansible,还可以直接使用svn或git,但是如果服务器比较少的情况下用ansible这样的工具总有些杀鸡用牛刀的感觉,故给新来的开发人员写下如下脚本供其上传新文件到web服务器.
注:此脚本并非生产所用,只是从中摘了一小部分供初学者参考练习所用
#!/bin/bash
#version 0.1
#最后一次修改人:xxx
#公司内无论谁修改此脚本文件,请在上面注上您的姓名
clear
echo '注意:为了确保安全在同步时需要输入生产密码!!!'
echo -e '\e[32m1.本地指定文件(目录)------->>生产服务器指定文件(目录)\e[m'
echo -e '\e[32m2.本地web根目录------->>生产服务器web跟目录\e[m'
echo -e '\e[35m3.退出'
while :
do
??read -p '选择你的操作:' num
??if [ $num -eq 1 ];then
???read -p "输入本地文件绝对路径:" src
???read -p "您要同步文件到哪台机器?(web1/web2/web3):" web
???read -p "输入远程文件绝对路径:" dst
???read -p "您确定要进行文件同步吗?(yes/no):" ack
???if [ "$ack" == "yes" ];then
????rsync -arvlSH $src $web:$dst 2>/dev/null
????[ $? -eq 0 ] && echo "同步成功!请去生产服查看" || echo "同步失败,请自行检查或联系运维人员"
???elif [ "$ack" == "no" ];then
????:
???else
????echo '输入错误!'
???fi
??elif [ $num -eq 2 ];then
???echo '你现在还不能这么做!'
??elif [ $num -eq 3 ];then
???exit
??fi
done??
执行效果如下:
背景:一般公司内生产服务器的web上线更新是由运维人员来完成的,但是不排除有些公司管理混乱,开发自己上传文件到服务器,比如本人之前所在的公司就出现这样的奇葩事,更新方法有很多种,服务多了用自动化运维工具,比如ansible,还可以直接使用svn或git,但是如果服务器比较少的情况下用ansible这样的工具总有些杀鸡用牛刀的感觉,故给新来的开发人员写下如下脚本供其上传新文件到web服务器.
注:此脚本并非生产所用,只是从中摘了一小部分供初学者参考练习所用
#!/bin/bash
#version 0.1
#最后一次修改人:xxx
#公司内无论谁修改此脚本文件,请在上面注上您的姓名
clear
echo '注意:为了确保安全在同步时需要输入生产密码!!!'
echo -e '\e[32m1.本地指定文件(目录)------->>生产服务器指定文件(目录)\e[m'
echo -e '\e[32m2.本地web根目录------->>生产服务器web跟目录\e[m'
echo -e '\e[35m3.退出'
while :
do
??read -p '选择你的操作:' num
??if [ $num -eq 1 ];then
???read -p "输入本地文件绝对路径:" src
???read -p "您要同步文件到哪台机器?(web1/web2/web3):" web
???read -p "输入远程文件绝对路径:" dst
???read -p "您确定要进行文件同步吗?(yes/no):" ack
???if [ "$ack" == "yes" ];then
????rsync -arvlSH $src $web:$dst 2>/dev/null
????[ $? -eq 0 ] && echo "同步成功!请去生产服查看" || echo "同步失败,请自行检查或联系运维人员"
???elif [ "$ack" == "no" ];then
????:
???else
????echo '输入错误!'
???fi
??elif [ $num -eq 2 ];then
???echo '你现在还不能这么做!'
??elif [ $num -eq 3 ];then
???exit
??fi
done??
执行效果如下:
原文地址:https://blog.51cto.com/14285174/2392006