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 ]; then
echo $USAGE
exit
fi
echo "start"
ssh 192.168.146.239 /usr/local/chenjinyu/monitor/monitorResource.sh $ $
echo ""
sh /usr/local/chenjinyu/monitor/monitorResource.sh $ $
echo ""
ssh 192.168.146.4 /usr/local/chenjinyu/monitor/monitorResource.sh $ $
echo ""
ssh 192.168.146.188 /usr/local/chenjinyu/monitor/monitorResource.sh $ $
echo "" ssh 192.168.146.20 /usr/local/chenjinyu/monitor/monitorResource.sh $ $
echo ""

思考:

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

尝试:

查资料可以加-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 ]; then
echo $USAGE
exit
fi echo "start"
ssh 192.168.146.239 /usr/local/chenjinyu/monitor/monitorResource.sh $ $ &
echo "" sh /usr/local/chenjinyu/monitor/monitorResource.sh $ $ &
echo "" ssh 192.168.146.4 /usr/local/chenjinyu/monitor/monitorResource.sh $ $ &
echo "" #ssh 192.168.146.188 /usr/local/chenjinyu/monitor/monitorResource.sh $ $ &
echo "" ssh 192.168.146.20 /usr/local/chenjinyu/monitor/monitorResource.sh $ $ &
echo ""

Linux:ssh远程执行命令并自动退出的更多相关文章

  1. ssh远程执行命令并自动退出(已测试通过)

    转自:http://blog.csdn.net/fdipzone/article/details/23000201 ssh命令格式如下: usage: ssh [-1246AaCfgKkMNnqsTt ...

  2. ssh远程执行命令并自动退出

    usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [ ...

  3. SSH远程执行命令环境变量问题

    SSH命令格式 usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address: ...

  4. 解决SSH远程执行命令找不到环境变量的问题

    通过SSH执行远程主机的命令或脚本时,经常会出现找不到自定义环境变量的问题.但是,如果通过SSH登录远程主机,然后再执行相同的命令或脚本,那么此时执行又是成功的.两种相似的方法,得到的结果却截然不同, ...

  5. [转帖]ssh 远程执行命令

    ssh 远程执行命令 https://www.cnblogs.com/youngerger/p/9104144.html SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来登录那可是 ...

  6. 网络编程 - 1.简单的套接字通信/2.加上通信循环/3.bug修复/4.加上链接循环/5.模拟ssh远程执行命令

    1.简单的套接字通信 服务端 ''' 服务端 接电话 客户端 打电话 1.先启动服务端 2.服务端有两种套接字 1.phone 用来干接收链接的 2.conn 用来干收发消息的 ''' import ...

  7. 利用scp 远程上传下载文件/文件夹和ssh远程执行命令

    利用scp传输文件 1.从服务器下载文件scp username@servername:/path/filename /tmp/local_destination例如scp codinglog@192 ...

  8. ssh远程执行命令使用明文密码

    经过不懈的搜索终于找到ssh远程执行命令使用明文密码使用sshpass. 例子: sshpass -p "sequoiadb" ssh root@localhost "l ...

  9. 模拟ssh远程执行命令,粘包问题,基于socketserver实现并发的socket

    06.27自我总结 1.模拟ssh远程执行命令 利用套接字编来进行远程执行命令 服务端 from socket import * import subprocess server = socket(A ...

随机推荐

  1. c#复习整理

    一.基本语法 1.数据类型 整数类型:int.long 浮点类型:float.double.decimal 布尔类型:bool 字符串类型:string 2.类型转换 int a; double b ...

  2. linux命令(13) 删除指定文件夹下后缀名相同的文件

    方法一: find 目录 -name "*.abc" | xargs rm命令有点危险,可以先执行前半段,看看是不是你要删除的文件, 然后再整条执行 方法二:find . -nam ...

  3. JAVA break终止循环,与continue进入下一次循环

    一.break终止循环 在循环中,遇到break;将会跳出循环,继续往下执行代码 public class Test{ public static void main(String[] args){ ...

  4. Apache Thrift学习之一(入门及Java实例演示)

    目录: 概述 下载配置 基本概念 数据类型 服务端编码基本步骤 客户端编码基本步骤 数据传输协议 实例演示(java) thrift生成代码 实现接口Iface TSimpleServer服务模型 T ...

  5. log4j+logback+slf4j+commons-logging的关系与调试

    背景     由于现在开源框架日益丰富,好多开源框架使用的日志组件不尽相同.存在着在一个项目中,不同的版本,不同的框架共存.导致日志输出异常混乱.虽然也不至于对系统造成致命伤害,但是明显可以看出,架构 ...

  6. shell如何传递外部参数给文件

    shell里面如何传递参数: sh test.sh zhang 20 那test.sh里面咋接受参数呢? #!/usr/bin/env sh name=$1 age=$2 echo "nam ...

  7. java socket通讯(二)处理多个客户端连接

    通过java socket通讯(一) 入门示例,就可以实现服务端和客户端的socket通讯,但是上一个例子只能实现一个服务端和一个客户端之间的通讯,如果有多个客户端连接服务端,则需要通过多线程技术来实 ...

  8. mybatis模板

    因为这里是说mybatis的,所以呢 servlet就不做多说了,代码也不在这里贴出来了. log4j.properties log4j.rootLogger=DEBUG,Console log4j. ...

  9. mysql 如何用root 登录

    mysql -uroot -p 如果没有密码,按两下回车就进去了

  10. css margin-top设置html元素之间的距离

    css margin-top属性设置的是一个元素的顶端与另一个元素之间的距离.这个距离称为上外边距,本文章向大家介绍css margin-top属性的用法和实例,需要的朋友可以参考一下. css ma ...