【发布时间】:2012-09-28 13:13:11
【问题描述】:
我想解析.ssh/config文件中包含的代理信息,并显示每个具有相关代理信息的主机和代理信息。应该过滤掉没有任何代理信息的主机。 .ssh/config 的手册页:http://man-wiki.net/index.php/5:ssh_config
这应该通过 Bash 下的 Unix shell 脚本来完成,因此首选 Perl、awk 或 sed 等标准工具。
示例输入文件:
Host ssh.foo.com
User ssh
HostName ssh.foo.com
Port 443
ProxyCommand /usr/local/bin/corkscrew proxy 8080 %h %p ~/.ssh/proxyauth
Host ci
HostName 127.0.0.2
User ci
Host nightly
HostName 192.168.1.1
User goodnight
Host foobar.org
User git
HostName foobar.org
Port 443
ProxyCommand /usr/local/bin/corkscrew proxy 8080 %h %p ~/.ssh/proxyauth
Host integration
HostName 192.168.1.2
User int
预期的输出应如下所示:
Host: ssh.foo.com - Proxy: /usr/local/bin/corkscrew proxy 8080 %h %p ~/.ssh/proxyauth
Host: foobar.org - Proxy: /usr/local/bin/corkscrew proxy 8080 %h %p ~/.ssh/proxyauth
这里的困难是搜索必须覆盖多行。
【问题讨论】: