当切换用户时,运行远程脚本的ssh命令存在于远程服务器上的shell

时间:2014-01-23 17:10:11

标签: 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

请注意上面的 su 命令。

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

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

我该怎样防止这种情况?确保rpm命令的颁发者与root用户不同,只是列出了?

2 个答案:

答案 0 :(得分:3)

  

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

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

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

sudo -u myuser rpm -Uvp ...

答案 1 :(得分:-1)

在脚本末尾添加“退出”