Я продолжаю уничтожать и создавать виртуальные машины, поэтому ssh часто жалуется, что яNASTY
. Мммм...
В любом случае, я написал функцию fish, чтобы изгнать проблемную клавишу в строке, о которой она мне сообщает sed
:
function forgethost
sed -i.bak {$argv}d ~/.ssh/known_hosts
end
но я бы хотел сохранить команду в кавычках, чтобы немного защитить себя от (инъекции). Когда я оборачиваю ее в ''
, она не заменяет $argv
. Кроме того, я бы предпочел просто захватить первый аргумент [0]
, но когда я добавляю его, он также не расширяется.
решение1
Создайте ~/.ssh/config
запись для виртуальных машин, которые вы постоянно воссоздаете. Пример ниже. Это значит, что вам не придется постоянно взламывать свой ~/.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