![]() |
踏实的风衣 · vue中的数据更新后的Dom操作 ...· 4 月前 · |
![]() |
近视的胡萝卜 · 时间 format 毫秒 ...· 7 月前 · |
![]() |
宽容的铁链 · Xillybus Black ...· 11 月前 · |
![]() |
豪爽的帽子 · MacBook m1 ...· 1 年前 · |
![]() |
直爽的伏特加 · 如何使用ANTRL4解析Clickhouse ...· 1 年前 · |
我试图通过
ssh
执行一个包含
sub-code
或$(子代码)(我一直使用它,但我不知道它的正式名称)的命令,首先在目标服务器上执行。
为了便于讨论,假设这是我要使用的命令。当然,这可以使用
hostname
来完成,但这只是一个简化的示例,其中包含了我想要使用的所有格式设置向导。
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
我想要一个包括使用正确转义的
` or $() because I'd like to know if it's possible.
回显的答案。
如何通过管道传输命令的输出并在本地运行awk?
ssh yourhost uname -a | awk '{ print $2 } '
如果您正在尝试获取主机名,请使用:
ssh myServer "uname -n"
只是一些额外的注意事项:
在我的例子中,
$
的转义没有帮助:
ts1350:> ssh sysadm@node "grep feature features.txt| awk '{print $6}' "
Password:
A feature -name ue_trace_mme | off
ts1350:> ssh sysadm@node "grep feature features.txt| awk '{print \$6}' "
Password:
awk: cmd. line:1: {print \}
awk: cmd. line:1: ^ backslash not last character on line
awk: cmd. line:1: {print \}
awk: cmd. line:1: ^ syntax error
ts1350:> ssh sysadm@node "grep feature features.txt| awk '{print \\$6}' "
Password:
awk: cmd. line:1: {print \\}