【问题标题】:nested ssh -t -t not providing $PS1嵌套 ssh -t -t 不提供 $PS1
【发布时间】:2016-12-21 08:17:04
【问题描述】:

我正在尝试运行嵌套的 ssh -t -t,但在使用 catecho 时它不会为我提供环境变量。

#!/bin/bash

pass="password\n"
bla="cat <(echo -e '$pass') - | sudo -S su -"
ssh -t -t -t -t jumpserver "ssh -t -t -t -t server \"$bla\" "

我得到一个没有考虑任何变量的输出。 (例如,PS1 未显示,但命令工作正常)问题与 cat &lt;(echo -e '$pass') - 有关,但这是在提供 sudo 的密码后保持 echo 活动的方法。

我怎样才能实现这一点并获取环境变量以获得正确的输出?

谢谢。

【问题讨论】:

    标签: bash ssh pipe environment-variables tty


    【解决方案1】:
    1. -tt 就足够了。使用更多-t 不会增加任何效果,只会给人一种不知道自己在做什么的印象。

    2. cat &lt;(echo -e) 构造的意义何在?只写echo 会导致相同的结果,不是吗?

    3. 为什么要使用sudo susudo 已经满足了你的所有需求,不是吗?

    那怎么才能穿出时尚感呢?

    pass="password\n"
    bla="echo '$pass' | sudo -Si"
    ssh -tt jumpserver "ssh -tt server \"$bla\""
    

    它有效吗?尝试使用-vvv 切换到ssh 来调试命令。它将向您展示实际执行的内容并传递给彼此的 shell。

    【讨论】:

    • 感谢您的回复! 1. 多个-t 被添加为ssh 的手册声明“多个-t 选项强制tty 分配”。 2. echo proc 死亡并杀死了 sudo su - 这就是我使用该结构的原因,3. 我需要一个交互式 shell 作为 root 所以 sudo != sudo su
    • sudo -i 是您所需要的。如果关闭sudo 的标准输入,它显然会结束。
    • 刚刚试了一下,没有cat 结构,它会终止连接,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 2018-11-06
    • 1970-01-01
    相关资源
    最近更新 更多