远程执行脚本

构建服务器上,要运行脚本来部署服务的话。遇到的一个问题就是要用ssh和scp来执行远程服务器。 但是有一个问题,就是变量的使用。因为没有掌握到,所以之前有走入误区。还好在百度过程找到如下代码

#!/bin/bash
 
BAK_TIME='2014-10-06'
COMMAND="sudo /bin/tar -zxf /data/db_backup/ssh_test_${BAK_TIME}-*.tar.gz -C /data; \
         EXTRACT_DIR=\`sudo /bin/find /data -type d -name ssh_test_${BAK_TIME}-*\`; \
         for i in \`sudo /bin/ls \$EXTRACT_DIR\` ; do mysql -uroot -p'123456' testdb -e \"source \$EXTRACT_DIR/\$i\" ;done"
 
ssh -lroot -p22 192.168.10.169 "${COMMAND}"

发现原来我这种写法是有问题的

function deploye (){

  #cd $CODEPATH
 
  #scp target/$JARNAME  $DEPLOYESERVER:$DEPLOYEPATH/$JARNAME.new
  

ssh -o StrictHostKeyChecking=no $DEPLOYESERVER  << eeooff

   echo '-------------------'
   echo $DEPLOYEPATH/$JARNAME
   echo '------------------' 

  # MTIME=`ls -l --time-style="long-iso"  $DEPLOYEPATH/$JARNAME  |awk '{ print $6 "-" $7}'`

   echo '----------------'
   echo $MTIME
   echo '------------------------' 
   cd $DEPLOYEPATH 
 #  mv -f $JARNAME   $JARNAME.$MTIME
 #  mv -f $JARNAME.new    $JARNAME
     
   exit 
eeooff
}

用这种方法还会报错 修改成下面的方法就没问题了


function deploye (){

  cd $CODEPATH

  scp target/$JARNAME  $DEPLOYESERVER:$DEPLOYEPATH/$JARNAME.new

ssh -o StrictHostKeyChecking=no $DEPLOYESERVER  << eeooff

   #用变量的方法有问题,解决了
  # echo   > tpid
   MTIME=\`ls -l --time-style="long-iso"  $DEPLOYEPATH/$JARNAME  |awk '{ print \$6 "-" \$7}'\`
   cd $DEPLOYEPATH 
   mv -f $JARNAME   $JARNAME.\$MTIME
   mv -f $JARNAME.new    $JARNAME

   exit
eeooff
}


Linux 利用shell脚本远程登录服务器

#!/bin/bash
export PGPASSWORD="login password"
 
ssh -o StrictHostKeyChecking=no user@domain > /dev/null 2>&1 << eeooff
 
you cmd(需要root权限执行时:echo password | sudo -S you cmd)
 
exit
 
eeooff

转载于:https://my.oschina.net/miaojiangmin/blog/1862684

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值