zoukankan      html  css  js  c++  java
  • linux shell 远程执行命令

    经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦。

    所有就想到编写一个脚本来部署不同的服务器

    前提条件:

         配置ssh免登陆 

        如果不会的请参加我的另外一篇文章 http://blog.csdn.net/chenpy/article/details/30281515


    两个错误:

    Pseudo-terminal will not be allocated because stdin is not a terminal.
    使用ssh -t -t 可以解决

    另外一个问题Agent admitted failure to sign using the key.
    在ssh之前增加SSH_AUTH_SOCK=0 可以解决。
    SSH_AUTH_SOCK=0 ssh luolizhi@10.8.92.87 /bin/bash << remotessh

    (1)命令行执行登录并且在目标服务器上执行命令

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. ssh user@remoteNode "cd /home ; ls"  

    基本能完成常用的对于远程节点的管理了,几个注意的点:

    1. 双引号,必须有。如果不加双引号,第二个ls命令在本地执行
    2. 分号,两个命令之间用分号隔开

    (2)脚本的方式 

    这个正式我想要的方式,在目标服务器上执行批量的命令。

    #!/bin/bash  
    ssh root@192.168.0.23   << remotessh  
    killall -9 java  
    cd /data/apache-tomcat-7.0.53/webapps/  
    exit  
    remotessh  
    
    

    远程执行的内容在“<< remotessh ” 至“ remotessh ”之间,在远程机器上的操作就位于其中,注意的点:<< remotessh,ssh后直到遇到remotessh这样的内容结束,remotessh可以随便修改成其他形式。在结束前,加exit退出远程节点

    如果不想日志文件在本机出现可以修改配置

    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. ssh root@192.168.0.23 > /dev/null 2>&1   <remotessh  

    OK,大功告成。

    参考文档:http://www.cnblogs.com/ilfmonday/p/ShellRemote.html

    在ssh 后面增进/bin/bash 可以使后面的内容(<<EOF)之间的脚本在一个新的终端上执行。

    # version 1
    
    unset DEP_ROOT REL_DIR
    DEP_ROOT='/tmp'
    datestamp=$(date +%Y%m%d%H%M%S)
    REL_DIR="${DEP_ROOT}/${datestamp}"
    
    ssh localhost /bin/bash <<EOF
    if [ ! -d "$DEP_ROOT" ] && [ ! -e "$DEP_ROOT" ]; then
       echo "creating the root directory" 1>&2
       mkdir "$DEP_ROOT"
    fi
    mkdir "$REL_DIR"
    #echo "$REL_DIR"
    exit
    EOF
    
    scp -r ./dir1 user@server:"$REL_DIR"
    scp -r ./dir2 user@server:"$REL_DIR"
  • 相关阅读:
    Mint linux中调整屏幕亮度的方法
    poj 1085 Triangle War (状压+记忆化搜索)
    CF1060F Shrinking Tree
    leetcode492
    leetcode258
    leetcode226
    leetcode371
    leetcode104
    leetcode389
    leetcode448
  • 原文地址:https://www.cnblogs.com/luolizhi/p/5806906.html
Copyright © 2011-2022 走看看