运行切换到用户的远程 shell 脚本不会返回发出本地服务器 shell

运行切换到用户的远程 shell 脚本不会返回发出本地服务器 shell

当我运行这样的脚本时:

ssh -t [email protected] '/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

注意以上命令。

如果我注释掉命令,脚本远程运行,然后我的 shell 提示符返回到我来自的地方(与我运行上面的 ssh 命令的同一服务器)

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

我该如何防止这种情况发生?确保 rpm 命令的发出者不是仅列出的 root 用户吗?

答案1

使用 sudo 运行 rpm 命令:

#!/bin/sh
mkdir -p /data/workday/cred
chown -R myuser:myuser /data
sudo -u myuser rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm

答案2

su启动 shell。退出该 shell 后,rpm 命令将执行。如果您要更改用户以执行 rpm 命令,则

su -c 'rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm'  myuser

相关内容