加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在单个ssh命令中使用bash $(awk)?

发布时间:2020-12-15 19:06:35 所属栏目:安全 来源:网络整理
导读:我试图通过ssh执行一个单一命令,该命令包含’子代码’或$(子代码)(我一直使用它,但不知道该代码的正式名称)首先被执行,但是目标服务器。 为了论证,让我们说这是我想要使用的命令。当然这可以用主机名来完成,但这只是一个简化的例子,它包含了我想要使用
我试图通过ssh执行一个单一命令,该命令包含’子代码’或$(子代码)(我一直使用它,但不知道该代码的正式名称)首先被执行,但是目标服务器。

为了论证,让我们说这是我想要使用的命令。当然这可以用主机名来完成,但这只是一个简化的例子,它包含了我想要使用的所有格式化魔法。

echo `uname -a | awk '{print $2}'`

没问题。但是,如何正确地将其转发到单一命令中的ssh?以下是错误的,因为它允许服务器回复您的本地主机名。子代码在本地执行:

ssh myServer echo `uname -a | awk '{print $2}'`

但是,任何想到的逃避意识都不行:

$ ssh myServer echo `uname -a | awk '{print $2}'`
awk: cmd. line:1: {print $2}`
awk: cmd. line:1:           ^ invalid char '`' in expression
$ ssh myServer echo $(uname -a | awk '{print $2}')
bash: syntax error near unexpected token `('
$ ssh myServer echo $(uname -a | awk '{print $2}')
bash: syntax error near unexpected token `)'
$ ssh myServer echo $(uname -a | awk '{print $2}')
awk: cmd. line:1: {print $2})
awk: cmd. line:1:           ^ syntax error
bash: -c: line 0: unexpected EOF while looking for matching `)'
bash: -c: line 1: syntax error: unexpected end of file

我想要一个答案,包括使用正确转义的`或$(),因为我想知道是否可能。可能会更复杂一些。

尝试这个
ssh myServer "uname -a | awk '{print $2}' "

使用双引号“来分组您将远程执行的命令。

您还需要在$ 2参数中转义$,以使其不在本地计算,而是远程传递给awk。

编辑:

如果你想包括$(),你再次必须逃避$符号,像这样:

ssh myServer "echo $(uname -a | awk '{print $2}') "

你也可以逃离反驳`,像这样:

ssh myServer "echo `uname -a | awk '{print $2}'` "

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读