Sigo destruyendo y aprovisionando máquinas virtuales, por lo que ssh frecuentemente se queja de que estoy siendoNASTY
. Mmmm...
De todos modos, escribí una función fish para desterrar la clave ofensiva en la línea que me dice sed
:
function forgethost
sed -i.bak {$argv}d ~/.ssh/known_hosts
end
pero me gustaría mantener el comando citado para protegerme contra (inyectarme) un poco. Cuando lo envuelvo ''
, no lo reemplaza $argv
. Además, preferiría simplemente tomar el primer argumento [0]
, pero cuando lo agrego tampoco se expande.
Respuesta1
Cree una ~/.ssh/config
entrada para las máquinas virtuales que recrea continuamente. Ejemplo a continuación. Significa que no tienes que seguir pirateando tu ~/.ssh/known_hosts
archivo.
Host test-vm-1
StrictHostKeyChecking no
Respuesta2
Cuando lo envuelvo en '', no reemplaza a $argv.
Lo que quieres son comillas dobles, es decir "$argv"
. Esto es lo mismo que en otros caparazones.
Además, preferiría simplemente tomar el primer argumento [0], pero cuando lo agrego tampoco se expande.
En fish, el primer elemento de una lista tiene el índice 1, por lo que desea $argv[1]
.
Juntos eso significa
function forgethost
sed -i.bak "$argv[1]"d ~/.ssh/known_hosts
end
Por supuesto, también podría agregar manejo de errores si se ha dado más de un argumento con
if set -q argv[2] # yes, no $
echo "This only accepts one argument" >&2
return 1
endt