mkdir:通过 ssh 执行 sudo 时缺少操作数

mkdir: missing operand when doing sudo over ssh

我正在尝试通过 SSH 创建具有 sudo 用户权限的目录。

这是我形成的命令

some_command "ssh -t userA@host bash -c \"\'sudo -u userB bash -c \" mkdir -p /home/userB/dir_to_create \" \'\" "

此处 some_commandexpect 脚本的一部分。

我收到这个错误:-

[sudo] password for userB:
mkdir: missing operand
Try `mkdir --help' for more information.
Connection to host closed.

如果我运行 sudo -u userB bash -c "mkdir /home/userB/dir_to_create"

有效。

ssh -t user@host "bash -c \"sudo -u otherUser bash -c 'mkdir -p /home/userB/dir_to_create'\""

应该可以

根据 Mark Plotnick 的评论,我找到了答案。

这是解决方法

spawn bash -c "ssh -t userA@host \"sudo -u userB bash -c 'mkdir -p /home/userB/perf_tools' \" "

诀窍在于,单引号和双引号的位置让所有的魔法都发生在这个脚本中。