使用命令的输出生成 ssh 登录名

使用命令的输出生成 ssh 登录名

我有一个我非常喜欢的脚本,它生成一个两段 ssh + 端口转发命令。

ssh -N -f -o 'ControlMaster Auto' -o 'ControlPath /tmp/gimme_access' -o 'ControlPersist 1m' -L 6473:33.22.0.0:22 -i /home/sink/.ssh/id_dsa -o 'UserKnownHostsFile /home/sink/.ssh/known_hosts' -p 6000 [email protected] ; ssh -p 6473 -l noc -i /home/my_boy/.ssh/id_rsa -o 'StrictHostKeyChecking no' 127.0.0.1

这让我接触到许多不同的小发明,我可以重新编写它以将我登录到这些机器上,但我更喜欢该命令只输出连接字符串。

有什么东西可以让我通过管道传输生成上述字符串的命令并使我保持登录状态。我尝试通过管道传输到 bash,但这立即使我退出。

答案1

您可以用来eval运行存储在字符串中的命令(或基于另一个程序的输出):

eval 'echo Hello World'
eval $(magic-ssh-commmand-generator)

man bash

eval [arg ...]
    The  args  are  read  and concatenated together into a single command. 
    This command is then read and executed by the shell, and its exit status
    is returned as the value of eval.  If there are no args, or only null 
    arguments, eval returns 0.

相关内容