【问题标题】:remote sudo from local script with local redirection来自本地脚本的远程 sudo 与本地重定向
【发布时间】:2014-05-31 09:40:58
【问题描述】:

好的,我确定以前有人问过这个问题,但我一生都找不到答案(不可能/怎么做)。

我有一个 shell 脚本 script.sh,它使用以下命令在远程服务器上运行命令:

    ssh -t [SERVER] "[COMMAND TO BE EXECUTED REMOTELY]"

这很好用,包括命令是否包含 sudo。

但是,有时我会重定向此 script.sh 的输出,当然如果远程命令包含 sudo,sudo 密码提示也会被重定向。

有没有办法:

    ./script.sh > script.out

仍然在终端上得到远程 sudo 密码提示?

在 cli 上为 script.sh 传递 sudo 密码不是一种选择。

非常感谢,

阿拉斯代尔。

【问题讨论】:

    标签: linux bash shell redirect sudo


    【解决方案1】:

    您可以使用 tee 复制标准输入:

    ./script.sh | tee script.out
    

    之后,您可以使用 awk 命令过滤输出内容

    ./script.sh | tee script.out | awk '/^Password/ {print;}'
    

    【讨论】:

    • 是的,我知道 tee,问题是有很多输出,因此重定向并且只希望 sudo 提示符一直回到终端,但这可能是唯一的解决方案。 Edit 是否可以将 sudo 提示符重定向到 stderr 并将其余部分保留为 ssh -t [SERVER] "sudo [REMOTE COMMAND]" 中的 stdout
    • 恐怕这会有点困难。将输出转发到 stderr 就像 >&2 一样简单,但我认为这不是您想要的。但是看看我的编辑也许它可以帮助你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多