linux SSH 嵌套远程执行命令
2014-08-01 11:48
337 查看
如果需要在一台机器知晓其他机器的状况,你很可能会用到一个 linux 命令 SSH 。
通常的登录方法 :ssh 192.168.42.234 "uptime"
这个命令可以获取234机器的 cpu load status 。
如果你想要获取 234机器虚拟机的 cpu 状态(当然也可以是其他数据)该怎么办呢?
直接想到的方法是 :ssh 192.168.42.234 "ssh 10.10.1.2 \"uptime\""
显然可以奏效。
现在新的问题是如果我想查询该虚拟机的 mysql 该怎么办?(统计多台机器的 mysql 信息应该经常用到)
比如最简单查看远程数据库有哪些 database 。
照搬上面的方法:ssh 192.168.42.234 "ssh 10.10.1.2 \"mysql -uroot -padmin -e \"show databases\"\""
看似没错吧,但是结果是:
多个引号嵌套时,似乎转义字符并没有帮到我们。最后了花了两个小时的时间。终于找到一个折衷的办法。
下面附上代码。
通常的登录方法 :ssh 192.168.42.234 "uptime"
这个命令可以获取234机器的 cpu load status 。
如果你想要获取 234机器虚拟机的 cpu 状态(当然也可以是其他数据)该怎么办呢?
直接想到的方法是 :ssh 192.168.42.234 "ssh 10.10.1.2 \"uptime\""
显然可以奏效。
现在新的问题是如果我想查询该虚拟机的 mysql 该怎么办?(统计多台机器的 mysql 信息应该经常用到)
比如最简单查看远程数据库有哪些 database 。
照搬上面的方法:ssh 192.168.42.234 "ssh 10.10.1.2 \"mysql -uroot -padmin -e \"show databases\"\""
看似没错吧,但是结果是:
多个引号嵌套时,似乎转义字符并没有帮到我们。最后了花了两个小时的时间。终于找到一个折衷的办法。
下面附上代码。
f1(){ mysql -uroot -padmin "show databases" } login() { ssh -l ${1} ${2} "$(typeset -f);${3}" } login root 192.168.42.234 "login root 10.10.1.2 f1"测试有效。有更好方法的同学。欢迎讨论。
相关文章推荐
- linux ssh 到远程服务器执行命令和crontab中执行命令提示命令找不到的问题
- 用Telnet连接到远程服务器执行命令的C#程序
- c#远程执行命令备忘
- PowerShell 2.0 远程管理之启用和执行命令
- 利用pipe执行远程机器命令的分析
- python 利用pexpect进行多机远程命令执行
- Mac OS X:远程执行osascript命令及问题解决
- asp使用wmi远程执行命令
- 让lampp的nobody用户可执行远程需root权限的命令
- Microsoft Internet Explorer SP2远程任意命令执行漏洞
- python 利用pexpect进行多机远程命令执行
- Mac OS X:远程执行osascript命令
- 解决ssh远程执行命令无法使用awk的问题
- 一个用ssh来远程登录多台机器并执行命令的脚本
- 用ANT来传送文件到远程机器并且执行远程命令
- 快客电邮(QuarkMail)远程命令执行漏洞
- pexpect通过ssh执行远程命令
- 远程telnet并执行命令
- PowerShell 2.0远程管理之启用和执行命令 推荐
- 远程以root权限执行php命令 推荐