我有一个只能以我的用户名 (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 目录,其中包含一个空格。
是否有一个通用的解决方案允许我通过任何命令,无论引用多么复杂/疯狂,或者这是我已经达到的某种限制?还有其他可能的,也许更易读的解决方案吗?