Ich zerstöre und provisioniere ständig VMs, daher beschwert sich ssh häufig, dass ichNASTY
. Mmmm...
Wie dem auch sei, ich habe eine Fish-Funktion geschrieben, um die fehlerhafte Taste aus der Zeile zu entfernen, die sie mir mit folgendem Hinweis anzeigt sed
:
function forgethost
sed -i.bak {$argv}d ~/.ssh/known_hosts
end
aber ich möchte den Befehl in Anführungszeichen halten, um mich ein wenig davor zu schützen, mich selbst einzufügen. Wenn ich ihn in einschließe ''
, ersetzt er nicht $argv
. Außerdem würde ich es vorziehen, nur das erste Argument zu erfassen [0]
, aber wenn ich das hinzufüge, wird es auch nicht erweitert.
Antwort1
Erstellen Sie einen Eintrag für die VMs, die Sie ständig neu erstellen. Beispiel unten. Bedeutet, dass Sie Ihre Datei ~/.ssh/config
nicht ständig hacken müssen .~/.ssh/known_hosts
Host test-vm-1
StrictHostKeyChecking no
Antwort2
Wenn ich es in „“ einschließe, ersetzt es $argv nicht.
Sie möchten doppelte Anführungszeichen, also "$argv"
. Dies ist dasselbe wie in anderen Shells.
Außerdem würde ich es vorziehen, nur das erste Argument [0] zu nehmen, aber wenn ich das hinzufüge, wird es auch nicht erweitert.
In Fish hat das erste Element einer Liste den Index 1, Sie möchten also $argv[1]
.
Zusammen bedeutet das
function forgethost
sed -i.bak "$argv[1]"d ~/.ssh/known_hosts
end
Natürlich können Sie auch eine Fehlerbehandlung hinzufügen, wenn mehr als ein Argument angegeben wurde mit
if set -q argv[2] # yes, no $
echo "This only accepts one argument" >&2
return 1
endt