我想让我的~/.ssh/config
文件由 shell 脚本(或打印到 STDOUT 的其他任何内容)动态生成。
是否有 UNIX 技巧可以使读取文件导致执行命令并读取它的 STDOUT?
我想要什么:
#!/bin/bash
echo "Hello World"
$ cat myfile
Hello World
答案1
真正的问题是:为什么需要动态配置(以及如何避免动态生成配置)。
是否有 UNIX 技巧可以使读取文件导致执行命令并读取它的 STDOUT?
Bash 有一个功能可以做到这一点,它被命名为“进程替换”:
ssh -F <( echo "Host *"; echo " User dummy" ) ssh.example.com
很遗憾,它不能与 openssh 的 ssh 一起使用,因为它因错误而死亡:
Can't open user config file /dev/fd/63: No such file or directory
另外,有些人似乎使用复杂的方案来使用 FIFO 文件,例如多个 SSH 客户端配置文件,但最终他们使用别名,这可以通过以下方式简化:
alias ssh = '~/bin/gen_ssh_config.sh > /tmp/XX; ssh -F /tmp/XX'