我在寫一個bash腳本,我需要從ssh配置文件中獲取特定用戶。 ssh的配置文件看起來有點像這樣:Bash從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
我想獲得字符串「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的答案將是可取的。
'var = $(awk'/^Host bloo $/{x = 1} x &&/User/{print $ 2; exit}'ssh.conf)' – 123
@ 123 Noice。完美的作品,如果你添加這個答案我會接受它。 –
請注意,'openssh'配置不區分大小寫,這可能會讓你愚弄。使用'ssh'本身會讓你免受這些細節的影響。在下面檢查我的答案。 – Jakuje