2

これが私の最初の投稿ですので、ご容赦ください...

.bash_aliasesファイルを完全に構成した後、.ssh / configの驚くべき能力を発見しました。プログラミングにかなり不満があるため、bash_aliasesファイルから〜/への接続の詳細を解析するための優れた方法を探していました。 .ssh/configファイル。

したがって、詳細に入ると、私のbash_aliasesは次のようになります。

alias serverA='ssh -i ~/.ssh/serverA.key -o $SRVR_ALV user@serverAhostname'
alias serverB='ssh -i ~/.ssh/serverB.key -o $SRVR_ALV user@serverBhostname'
....

$SRVR_ALVでServerAliveIntervalの変数を定義したところ。

私の意図は、このエントリを解析し、その間にその醜い変数を取り除くことです

Host serverA
HostName serverAhostname
IdentityFile ~/.ssh/serverA.key

Host serverB
.....

これを実行するための最良の方法は何だと思いますか?私は素敵なbashスクリプトを探していました。あるいは、vi機能を使用していました。前もって感謝します!

4

1 に答える 1

0

Perlはどうですか?

perl -ne "/^alias (.*)='ssh -i (.*) -o (.*) (.*)\@(.*)'/ and 
    print qq{Host \$1\nHostName \$5\nIdentityFile \$2\n\n}" < \
 ~/.bash_aliases

表示されているものが気に入った場合は、リダイレクトして追加します>> ~/.ssh/config

[更新] -何が起こっているかについての非Perlユーザーへの説明:

perl -ne-eは、'次の引数は(e)xecute'へのスクリプトです。-n- means, '*run the given script once per line*' - sonesed` can sort-of emulate

Perlコード:

/^alias (.*)='ssh -i (.*) -o (.*) (.*)\@(.*)'/ and 
print qq{Host \$1\nHostName \$5\nIdentityFile \$2\n\n}

読み取り:正規表現に一致する行についてのみ、/^alias ../文字列を出力し( Perlの場合qq{...}と同じ"...")、補間された変数などは"\$1""\$4"正規表現でキャプチャされたものの結果です。

perl -neからの入力を期待します< ~/.bash_aliases

于 2012-12-01T00:06:55.637 に答える