如果需要在一台机器知晓其他机器的状况,你很可能会用到一个 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\"\""
看似没错吧,但是结果是:
多个引号嵌套时,似乎转义字符并没有帮到我们。最后了花了两个小时的时间。终于找到一个折衷的办法。
下面附上代码。
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"
测试有效。有更好方法的同学。欢迎讨论。