shell上线脚本

每次上线,先把内网代码用xhell拖到本地。再拖到线上服务器。

拖来拖去,太慢了。所以写了一个上线脚本

写了几次版本,这个是最终版本

scp_v3.sh

内容如下:

#!/bin/bash

#注释

:<<BLOCK

内网项目message,路径是/message/trunk/.....文件

线上路径是/server/www/....文件

那么scp的命令为

scp -r -P 22 -r /message/trunk/.....文件 192.168.1.110:/server/www/....文件

本脚本就是为了实现这个scp命令,有多个文件,循环执行.

执行方法为

./scp_sto_v3.sh /message/trunk/.....文件

例如:

./scp_sto_v3.sh /message/trunk/kdCore/library/stoSdk/providers/kuaiDts.php /message/trunk/www/view/common/header.php

BLOCK

echo -e "\033[31m 只适用于message项目,请知晓! \033[0m"

# 上线到线上服务器

case $* in

*)

#获取脚本后面输入的值,也就是本地文件绝对路径

a=$*

echo "Project message online to aliyun_sto" && read -n 1 -p "Please press any key to continue"

#判断参数的长度

aa=`echo "$a"| tr -cd " " | wc -c`

#定义初始变量

i=1

#定义方法

function cc(){

#以空格为单位,确定字符串分隔后的长度

split=`echo $a|cut -d " " -f$i`

#判断是否为空

if [ "$split" != "" ]

then

#自加一次

((i++))

#echo $split

#截取文件,获取项目名

pro=`echo $split | cut -d "/" -f 2`

#判断是否属于message项目

if [ "$pro" != "message" ];then

echo -e "\033[31m $split 非message项目,程序退出 \033[0m"

exit

fi

#截取线上服务器目录,排除/server/www

b=`echo ${split:18}`

#拼凑上线文件在远程服务器的绝对路径

c=`echo ${b%/*}`

#创建线上服务器文件目录,不管是否存在,都创建

ssh [email protected] "mkdir -p /server/www/$c"

#传输文件,分别到2台服务器

scp -r -P 22 -r $split 58.218.208.15:/server/www/$b

else

break

fi

}

#判断变量长度,0表示只有一个文件

if [ "$aa" == 0 ];then

while(($i==1))

do

#执行cc方法

cc

done

else

while((1==1))

do

cc

done

fi

;;

esac;

时间: 2024-10-09 09:31:53

shell上线脚本的相关文章

shell编程脚本语法

学习了两个月的Linux,记住了很多命令,知道了脚本的作用,也被脚本杀死了大概一半的脑细胞,现在脚本还不能熟练运用,感觉亏了.心疼我的脑细胞,痛恨脚本,但不得不说,脚本是一个好东西啊,用起来真的方便,但是写起来真的烧脑袋呦!下面来总结一下这周学习的脚本语法,哇,语法虽然不多也不难,但是结合起来熟练运用还有一定的难度,何况现在的脚本才几行,以后要写几行,心里没点数吗!废话少说,开始 跳过最基础的命令行堆积的脚本,总结一下让脚本更简洁实用的语法 首先,条件选择if语句登场 if语句用法:常见的单分支

怎么在命令模式下使用adb / 进入adb shell(脚本)

1.打开winows菜单,输入cmd命令,点击确定,进入命令模式下. 2.输入命令 D:(这里输入的D表示你的sdk存放的盘下) 然后回车输入cd 3.然后选择你sdk路径,复制路径. 4.鼠标点击cmd,选择编辑,选择粘贴 将复制的路径粘贴到 命令行 回车. 5.然后输入命令adb start-service 打开adb. 出现如图所示,表示adb服务开启成功,就可以使用adb命令了. 6.使用adb  shell 命令.--- 进入adb shell(脚本) 原文:http://jingya

shell之脚本实例

一 检查用户是否是root权限的方式:#!/bin/bashROOT_UID=0 # Root has $UID 0.E_WRONG_USER=65 # Not root? E_NOSUCHUSER=70SUCCESS=0 if [ "$UID" -ne "$ROOT_UID" ]then echo echo "Only root can run this script." echo exit $E_WRONG_USERelse echo ech

linux下的shell和脚本

1.各种Unix shell linux下的shell基本是从unix环境中的shell发展而来,贴一下wiki:其中我们常用的,可归类为Bourne Shell(/usr/bin/sh或/bin/sh).Bourne Again Shell(/bin/bash).C Shell(/usr/bin/csh).K Shell(/usr/bin/ksh).Shell for Root(/sbin/sh),等等 第一个Unix shell是由肯·汤普逊,仿效Multic上的shell所实现出来,称为s

【Telnet】使用Telnet协议连接到远程Shell执行脚本

介绍 本文介绍如何通过Telnet协议连接到远程Shell,执行脚本,并获取执行结果: 相关文章: <[Jsch]使用SSH协议连接到远程Shell执行脚本>http://www.cnblogs.com/ssslinppp/p/6244653.html 其他示例: http://commons.apache.org/proper/commons-net/examples/telnet/TelnetClientExample.java http://www.programcreek.com/ja

Linux shell 自启动脚本写法

# ********************************************************************** # Linux shell 自启动脚本写法 # 说明: # 我们在做系统的时候,写自启动脚本是常有的事,下面是一个样板分析. # # 2017-1-10 深圳 南山平山村 曾剑锋 # ********************************************************************** #!/bin/sh # 脚本

「笔记」「ubuntu」mint个人shell样式脚本

alias ll='ls -al' use_color=false # Set colorful PS1 only on colorful terminals.# dircolors --print-database uses its own built-in database# instead of using /etc/DIR_COLORS.  Try to use the external file# first to take advantage of user additions. 

linux 下shell 编写脚本

linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个脚本,给定一个正整数,反序输出这个这个数. 例如:程序输入123,那么应该输出321. 3.Linux命令+shell编程:编写一个程序,实现定时文件备份的功能. 要求: 1.备份某个目录下的所有文件 2.对备份文件进行压缩 3.生成合理的日志文件 4.Shell下的gui(libnotify-bi

python 捕获 shell/bash 脚本的输出结果

#!/usr/bin/python## get subprocess module import subprocess ## call date command ##p = subprocess.Popen("date", stdout=subprocess.PIPE, shell=True) ## Talk with date command i.e. read data from stdout and stderr. Store this info in tuple ## Inte