所以我有这个脚本会把你带到一个新系统,切换到一个新用户,然后我需要它在该用户下执行另外三个命令。这就是我现在设置的方式。
ssh -t $7 'cd /home/install/ ; su -c bash install ; tar -xvf [tarball] ; cd [directory] ; ./execute install ; bash'
它的作用是将我的用户切换到安装用户,但是在那里它不会执行以下任何命令。只有在我退出安装并返回root用户后,才会运行这些最终命令。
所以对于一个tldr;我需要一种方法来运行最后三个命令作为安装用户。
感谢您的时间! :)
答案 0 :(得分:0)
使用sudo
代替su
,这正是您真正需要的。
答案 1 :(得分:0)
你有两个问题:
你的报价被解读了
2.您没有正确使用su
如果您希望su
以该用户身份执行命令,则必须在STDIN中提供命令,例如echo 'cd; ls' | su user
。但是,要做到这一点,你需要逃避一些事情。
如果要以用户安装运行的命令是:
cmd1; cmd2; cmd3
因此,您可以像su
那样提供它:
echo 'cmd1; cmd2; cmd3' | su install
但是,你也希望通过ssh执行它,这意味着你必须在第一个序列中转义引号:
ssh user@host 'echo \'cmd1; cmd2; cmd3\' | su install'