VMを破壊したりプロビジョニングしたりし続けるので、sshは頻繁にエラーを出します。NASTY
。 んー...
とにかく、私は、次のように表示された行で問題のあるキーを排除する fish 関数を作成しましたsed
。
function forgethost
sed -i.bak {$argv}d ~/.ssh/known_hosts
end
しかし、自分自身を(注入する)ことから少し保護するために、コマンドを引用符で囲んでおきたいと思います。 で囲むと''
、 は置き換えられません$argv
。 また、最初の引数 だけを取得したいのです[0]
が、 を追加すると、これも展開されません。
答え1
~/.ssh/config
継続的に再作成する VM のエントリを作成します。以下に例を示します。つまり、~/.ssh/known_hosts
ファイルをハッキングし続ける必要はありません。
Host test-vm-1
StrictHostKeyChecking no
答え2
これを '' で囲むと、$argv は置き換えられません。
必要なのは二重引用符、つまり です"$argv"
。これは他のシェルの場合と同じです。
また、最初の引数 [0] だけを取得したいのですが、それを追加すると展開されません。
fish では、リストの最初の要素のインデックスは 1 なので、 が必要になります$argv[1]
。
一緒にそれは意味する
function forgethost
sed -i.bak "$argv[1]"d ~/.ssh/known_hosts
end
もちろん、複数の引数が与えられた場合にエラー処理を追加することもできます。
if set -q argv[2] # yes, no $
echo "This only accepts one argument" >&2
return 1
endt