• Linux:ssh远程执行命令并自动退出


    ssh命令格式

    [root@localhost ~]# ssh --help
    usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
    [-D [bind_address:]port] [-e escape_char] [-F configfile]
    [-I pkcs11] [-i identity_file]
    [-L [bind_address:]port:host:hostport]
    [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
    [-R [bind_address:]port:host:hostport] [-S ctl_path]
    [-W host:port] [-w local_tun[:remote_tun]]
    [user@]hostname [command]

      主要参数说明:

      -l 指定登入用户
      -p 设置端口号
      -f 后台运行,并推荐加上 -n 参数
      -n 将标准输入重定向到 /dev/null,防止读取标准输入
      -N 不执行远程命令,只做端口转发
      -q 安静模式,忽略一切对话和错误提示
      -T 禁用伪终端配置

    准备工作:

    两台服务器之间设置信任关系,具体步骤详见:http://www.cnblogs.com/channy14/p/4644765.html

    出现问题的情景:

    性能测试时,有5台服务器需要监控负载、io等信息,想在其中一台服务器上执行ssh统一运行5台服务器上的监控脚本(5台服务器上都已存放监控脚本),运行主allmonitor.sh脚本的时候只能ssh远程执行一条。以下为allmonitor.sh脚本内容:

    #!/bin/bash
    USAGE="Usage: $0 间隔时间(单位秒) 结果保存到的文件名"
    if [ $# -ne 2 ]; then
            echo $USAGE
        exit 1
    fi
    echo "start"
    ssh  192.168.146.239   /usr/local/chenjinyu/monitor/monitorResource.sh $1 $2
    echo "239"
    sh /usr/local/chenjinyu/monitor/monitorResource.sh $1 $2 echo "11"
    ssh 192.168.146.4 /usr/local/chenjinyu/monitor/monitorResource.sh $1 $2 echo "4"
    ssh 192.168.146.188 /usr/local/chenjinyu/monitor/monitorResource.sh $1 $2 echo "188" ssh 192.168.146.20 /usr/local/chenjinyu/monitor/monitorResource.sh $1 $2 echo "20"

    思考:

    加入调试代码,发现第一条的监控可以完整结束,但是跳不出来。猜想是不是要加入跳出当前脚本执行的命令

    尝试:

    查资料可以加-t参数,虚拟出一个终端,将【ssh 192.168.146.239 /usr/local/chenjinyu/monitor/monitorResource.sh $1 $2】改为:==>【ssh -t 192.168.146.239 /usr/local/chenjinyu/monitor/monitorResource.sh $1 $2】

    成功的方案:

    在命令末尾加&,远程后台运行

    #!/bin/bash
    USAGE="Usage: $0 间隔时间(单位秒) 结果保存到的文件名"
        
    if [ $# -ne 2 ]; then
            echo $USAGE
        exit 1
    fi
    
    echo "start"
    ssh  192.168.146.239   /usr/local/chenjinyu/monitor/monitorResource.sh $1 $2 &
    echo "239"
    
    sh /usr/local/chenjinyu/monitor/monitorResource.sh $1 $2 &
    echo "11"
    
    ssh  192.168.146.4   /usr/local/chenjinyu/monitor/monitorResource.sh $1 $2 &
    echo "4"
    
    #ssh  192.168.146.188 /usr/local/chenjinyu/monitor/monitorResource.sh $1 $2 &
    echo "188"
    
    ssh  192.168.146.20   /usr/local/chenjinyu/monitor/monitorResource.sh $1 $2 &
    echo "20"
    每天努力一点,每天学习一点。 Keep Moving...
  • 相关阅读:
    学习python -- 第018天 os模块
    学习python -- 第017天 文件读写
    重看算法 -- 动态规划 最大子段和问题
    重看算法 -- 递归与分治
    学习python -- 第016天 模块
    学习python -- 第016天 浅拷贝和深拷贝
    网络字节序、主机字节序(摘抄)
    C++/C常量
    结构化程序设计
    循环(高质量4.10)
  • 原文地址:https://www.cnblogs.com/channy14/p/4644920.html
Copyright © 2020-2023  润新知