【问题标题】:ssh command to run remote script exist shell on remote server when switching user切换用户时运行远程脚本的 ssh 命令在远程服务器上存在 shell
【发布时间】:2014-01-23 17:10:11
【问题描述】:

当我运行这样的脚本时:

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 不同的用户,只是列出的?

【问题讨论】:

标签: linux shell ssh sh


【解决方案1】:

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

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

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

sudo -u myuser rpm -Uvp ...

【讨论】:

    【解决方案2】:

    在脚本末尾添加“退出”

    【讨论】:

    • 那根本没有任何区别。
    猜你喜欢
    • 2010-11-03
    • 2021-09-04
    • 2012-10-20
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    相关资源
    最近更新 更多