【问题标题】:ssh echo command and result of its executionssh echo 命令及其执行结果
【发布时间】:2019-12-06 13:41:39
【问题描述】:

我想将 ssh 输出分配给变量,例如:

VAR="$(ssh $HOST "uname -a")"

VAR 只接收命令执行的结果。 是否可以在不调用额外回显的情况下获得两行命令+结果?

预期的 VAR 值:

hostname>uname -a
E570 4.15.0-70-generic #79-Ubuntu

【问题讨论】:

  • 听起来相当于 Windows 上的@echo on
  • var=$(cmd='uname -a'; echo "$cmd"; ssh host "$cmd")
  • @pynexj 原始问题说“没有调用额外的回声”。
  • @pynexj 是的,这是明确的解决方案。但我想知道是否有可能在没有额外命令的情况下做到这一点。可能有一个特定于 ssh 的密钥来启用命令本身的回显
  • ssh host 'set -x; uname' 怎么样?或ssh host $'set -v\nuname'?

标签: bash shell ssh


【解决方案1】:

你可以试试这个:

HOST=hostname
CMD="uname -a"
VAR="$HOST>$CMD #the new line is needed
$(ssh $HOST "$CMD")" 

现在如果你这样做:

echo "$VAR"

你获得:

hostname>uname -a
E570 4.15.0-70-generic #79-Ubuntu

我认为这是避免使用echo命令的唯一方法,但是您需要将要在ssh中执行的命令分配给变量。

【讨论】:

  • 您忘记了"$CMD" 中的美元符号。通常,将命令放入变量中是一个可疑的想法。 ssh 需要小写。
  • 是的,抱歉是打字错误!谢谢,我会改正的
猜你喜欢
  • 1970-01-01
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-19
  • 2019-06-10
  • 1970-01-01
  • 2022-09-23
相关资源
最近更新 更多