我有一个只能以我的用户名(myuser)登录的系统,但是我需要以其他用户(scriptuser)的身份运行命令。到目前为止,我已经提出了以下命令来运行所需的命令:
ssh -tq myuser@hostname "sudo -u scriptuser bash -c \"ls -al\""
但是,如果在尝试运行更复杂的命令时(例如,[[ -d "/tmp/Some directory" ]] && rm -rf "/tmp/Some directory"
我很快遇到引用问题)。我不确定如何将示例复杂命令传递给bash -c
,当\"
已经确定了我要传递的命令的边界时(因此我不知道如何引用/ tmp / Some目录,其中包括空格。
有没有一种通用的解决方案,无论引用多么复杂/疯狂,我都可以传递任何命令,还是我已经达到了某种限制?还有其他可能甚至更易读的解决方案吗?