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