尝试远程执行命令时,为什么会出现错误?

时间:2019-02-28 23:34:23

标签: linux bash shell quoting

我有一个关于通过SSH远程执行命令的问题。我在下面尝试。

ssh xx.xx.xx.xx "psql -U qradar -c "select count(id) from offense_view where to_timestamp(start_time/1000) > NOW() - interval '180 minutes'"

它给出了如下错误:

Pseudo-terminal will not be allocated because stdin is not a terminal.
ERROR:  syntax error at or near "180"
LINE 1: ... to_timestamp(start_time/1000) > NOW() - interval 180 minute...

1 个答案:

答案 0 :(得分:1)

问题在于您在命令中使用双引号将参数定界为ssh,还将参数定为psql。这导致您的字符串被错误地解析。您还缺少psql命令的结尾双引号。

嵌套引号在shell中比较棘手,在使用ssh时更难。如果您使用here-doc,则会更容易。

ssh xx.xx.xx.xx <<EOF
psql -U qradar -c "select count(id) from offense_view where to_timestamp(start_time/1000) > NOW() - interval '180 minutes'"
EOF