linux SSH 嵌套远程执行命令

如果需要在一台机器知晓其他机器的状况,你很可能会用到一个 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"
测试有效。有更好方法的同学。欢迎讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值