我正在尝试运行嵌套的ssh -t -t,但在使用cat
和echo
时,它不会为我提供环境变量。
#!/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
生效的方法。
我如何实现这一点并获取环境变量以获得正确的输出?
感谢。
答案 0 :(得分:0)
-tt
就够了。使用更多-t
不会增加任何效果,只会让人觉得你不知道自己在做什么。
cat <(echo -e)
建设有什么意义?只写echo
会产生相同的结果,不是吗?
为什么要使用sudo su
? sudo
已经完成了你所需要的一切,不是吗?
那么它怎么能以时尚的方式看待呢?
pass="password\n"
bla="echo '$pass' | sudo -Si"
ssh -tt jumpserver "ssh -tt server \"$bla\""
它有效吗?尝试使用-vvv
切换到ssh
来调试命令。它将向您显示实际执行的内容并传递给其他shell。