Eu continuo destruindo e provisionando VMs, então o ssh reclama frequentemente que estou sendoNASTY
. Hummm...
De qualquer forma, escrevi uma função fish para banir a chave ofensiva na linha que ela me diz sed
:
function forgethost
sed -i.bak {$argv}d ~/.ssh/known_hosts
end
mas gostaria de manter o comando citado para me proteger um pouco contra (injeção). Quando eu o envolvo ''
, ele não substitui $argv
. Além disso, prefiro pegar apenas o primeiro argumento [0]
, mas quando acrescento isso ele também não se expande.
Responder1
Crie uma ~/.ssh/config
entrada para as VMs que você está recriando continuamente. Exemplo abaixo. Significa que você não precisa continuar hackeando seu ~/.ssh/known_hosts
arquivo.
Host test-vm-1
StrictHostKeyChecking no
Responder2
Quando eu envolvo em '', ele não substitui $ argv.
O que você quer são aspas duplas, ou seja "$argv"
, . É o mesmo que em outros shells.
Além disso, prefiro pegar apenas o primeiro argumento [0], mas quando acrescento isso ele também não se expande.
Em fish, o primeiro elemento de uma lista tem o índice 1, então você quer $argv[1]
.
Juntos isso significa
function forgethost
sed -i.bak "$argv[1]"d ~/.ssh/known_hosts
end
É claro que você também pode adicionar tratamento de erros se mais de um argumento for fornecido com
if set -q argv[2] # yes, no $
echo "This only accepts one argument" >&2
return 1
endt