我想在 ssh_config 文件中提取给定主机的设置并将其放入变量中。
Host mysite
HostName 123.1.1.1
User myuser
Port 13245
GSSAPIAuthentication no
IdentityFile /home/myuser/.ssh/id_dsa
Host anothersite
HostName 321.2.2.2
User myuser
Port 22
GSSAPIAuthentication no
IdentityFile /home/myuser/.ssh/anothersite_dsa
在首先匹配主机名后,我需要匹配给定设置的值的第一次出现。我刚刚开始学习基本的正则表达式,这是我自己所掌握的,但是我有太多时间在这方面并且需要一些帮助。该脚本在与“Host mysite”匹配后查找“IdentityFile”的第一次出现,并将单词“IdentityFile”替换为“test”。
IDF="IdentityFile"
HOST="mysite"
get_host_option() {
option="$IDF"
[ -f /etc/ssh/ssh_config ] || return
perl -0pe 's/(?<=Host[[:space:]]'"$HOST"')(.*?)'"$option"'/$1test/s' /etc/ssh/ssh_config
}
get_host_option "$IDS"
我需要的是为 IdentityFile 设置的放置到变量中的路径。这样我就可以像这样使用它。
ssh-add $IDPATH
答案1
尝试这个 :
perl -0ne 'print $& if /^Host.*?IdentityFile\s+\K[^\n]+/ms' file