使用 SSH_ORIGINAL_COMMAND 在远程 ssh 执行中遵守引号

使用 SSH_ORIGINAL_COMMAND 在远程 ssh 执行中遵守引号

我正在尝试执行一个参数中带有空格的远程脚本,但 ssh 却干扰了它们。

我在一台机器里得到了这个脚本

#!/bin/bash

CONT="1"
while test "$#" -gt 0
do
    echo "P${CONT} [$1]"
    P="$P P${CONT} [$1]"
    shift
    let "CONT++"
done
echo "DEBUG: `date` - SSH_ORIGINAL_COMMAND [$SSH_ORIGINAL_COMMAND]"

并产生以下输出:

./test_ssh.sh a 'b c' d
P1 [a]
P2 [b c]
P3 [d]
DEBUG: dj abr 19 14:03:52 CEST 2018 - SSH_ORIGINAL_COMMAND []

从远程机器我得到这个输出:

ssh root@olivera "test_ssh.sh a 'b c' d"
P1 [a]
P2 ['b]
P3 [c']
P4 [d]
DEBUG: dj abr 19 14:05:04 CEST 2018 - SSH_ORIGINAL_COMMAND [test_ssh.sh a 'b c' d]

我尝试了双引号和 scape 的几种组合,但都没有成功。

有什么提示吗?

相关内容