嵌套的ssh -t -t不提供$ PS1

时间:2016-12-21 08:17:04

标签: bash ssh pipe environment-variables tty

我正在尝试运行嵌套的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 <(echo -e '$pass') -有关,但这是在echo提供密码后保持sudo生效的方法。

我如何实现这一点并获取环境变量以获得正确的输出?

感谢。

1 个答案:

答案 0 :(得分:0)

  1. -tt就够了。使用更多-t不会增加任何效果,只会让人觉得你不知道自己在做什么。

  2. cat <(echo -e)建设有什么意义?只写echo会产生相同的结果,不是吗?

  3. 为什么要使用sudo susudo已经完成了你所需要的一切,不是吗?

  4. 那么它怎么能以时尚的方式看待呢?

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

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