/dev/nu-6ren">
gpt4 book ai didi

bash - 在 bash 脚本中将 SSH 输出捕获为变量

转载 作者:行者123 更新时间:2023-11-29 08:46:04 25 4
gpt4 key购买 nike

在编写 bash 脚本时,我一直在努力解决这个问题。基本上,我想测量远程服务器上程序的时间,所以我使用命令:/usr/bin/time -f %e sh -c "my command >/dev/null 2>&1" 执行程序。但是,似乎我根本无法将命令 (SSH) 的输出捕获到变量。事实上,结果(时间)一直被打印到标准输出。

完整代码为:

respond=$(ssh ${fromNode} /usr/bin/time "-f" "%e" "'sh' '-c' 'virsh migrate --live ${VM} qemu+ssh://${toNode}/system --verbose > /dev/null 2>&1'")

虽然时间被打印到标准输出,但 respond 的值只是空的。

最佳答案

“time”命令将结果打印到 stderr,而不是 stdout。因此它不会通过管道传输到您的变量中。

您应该将 stderr 重新路由到 stdout 以实现您想要的:

 result=$(ssh host time "command" 2>&1)

你的完整代码看起来像这样:

 respond=$(ssh ${fromNode} /usr/bin/time "-f" "%e" "'sh' '-c' 'virsh migrate --live ${VM} qemu+ssh://${toNode}/system > /dev/null 2>&1'" 2>&1)

关于bash - 在 bash 脚本中将 SSH 输出捕获为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12048906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com