Linux 切换用户时在远程服务器上运行远程脚本外壳的ssh命令

Linux 切换用户时在远程服务器上运行远程脚本外壳的ssh命令,linux,shell,ssh,sh,Linux,Shell,Ssh,Sh,当我运行这样的脚本时: ssh -t root@10.10.10.10 '/tmp/somescript.sh' 其中,脚本定义为: #!/bin/sh mkdir -p /data/workday/cred chown -R myuser:myuser /data su myuser - # <------- NOTICE THIS ! ! ! ! rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm

当我运行这样的脚本时:

ssh -t root@10.10.10.10 '/tmp/somescript.sh'
其中,脚本定义为:

#!/bin/sh
mkdir -p /data/workday/cred
chown -R myuser:myuser /data
su myuser -  # <------- NOTICE THIS ! ! ! ! 
rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm
注意上面的su命令

如果我注释掉su命令,脚本将远程运行,然后我的shell提示符将返回到我来自运行上述ssh命令的同一服务器的位置

但保留上面列出的脚本会导致脚本成功完成,但shell提示符仍保留在远程服务器上


我怎样才能防止呢?确保rpm命令的发出者与列出的root用户不同

在脚本末尾添加“退出”

但保留上面列出的脚本会导致脚本成功完成,但shell提示符仍保留在远程服务器上

不完全是。脚本运行到su命令,该命令生成一个新的子shell,并在那里停止,直到您退出shell。在退出该shell之前,rpm命令永远不会运行,当它运行时,它将以root用户身份运行

如果要以非root用户的身份运行rpm命令,则需要执行一些不同的操作,如:

sudo -u myuser rpm -Uvp ...

不鼓励在多个站点上问同一个问题:这根本没有什么区别。