我正在编写一个 bash 脚本,我需要从 ssh 配置文件中获取特定用户。 ssh 配置文件看起来有点像这样:
HOST blag
HostName blag.net.au
Port 2683
User blaguser
Host bloo
User ABCDEF
IdentityFile ~/.ssh/id_rsa
HOST biff
HostName biff.net.au
Port 2683
User biffuser
我想通过搜索 Host bloo 来获取字符串 'ABCDEF' 并将其放入一个变量中。
我能够使用 https://superuser.com/questions/791374/get-variable-values-from-config-file/791387#791387?newreg=6626dd5535194d0180a91b6ace31e16f 的答案读取配置文件,但它为数组分配文件中的最后一个主机条目。
我可以使用此答案删除主机条目 How can I remove a Host entry from an ssh config file? .可以编辑此处的 sed 命令以提取正确的 User
但我不确定具体如何
我遇到了很多麻烦。有人可以帮忙吗?最好使用 sed 的答案。
最佳答案
您可以使用ssh
配置测试模式来解析配置文件并返回您期望的值:
ssh -G hostname | grep "^user "
从 openssh-6.8
开始这应该可以工作。
关于Bash 从 ssh 配置文件中提取特定主机的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38304271/