Самый легкий способ надежно достигнуть свободное пространство на диске использует WMI. При попытке проанализировать вывод dir
Вы получаете все виды забавных проблем, по крайней мере с версиями Windows на других языках. Можно использовать wmic
запрашивать свободное пространство на диске:
wmic logicaldisk where "DeviceID='C:'" get FreeSpace
Это произведет что-то как
FreeSpace
197890965504
Можно вызвать это в одну строку путем добавления /format:value
переключатель:
> wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value
FreeSpace=197890965504
Существует несколько пустых строк там, хотя (приблизительно три или четыре), которые не предоставляют себя хорошо для обработки. К счастью for
команда может удалить их для нас, когда мы делаем маркирование:
for /f "usebackq delims== tokens=2" %x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%x
Хорошая вещь здесь состоит в том, что, так как мы только используем второй маркер все пустые строки (которые не имеют второго маркера) проигнорированы.
Не забудьте удваиваться %
знаки при использовании этого в пакетном файле:
for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%x
Можно теперь использовать свободное пространство, которое хранится в переменной среды %FreeSpace%
.
Отредактируйте свой ssh_config файл и добавьте, изменяют эту строку:
CheckHostIP no
Значения по умолчанию CheckHostIP к 'да'. То, что это делает, должно сделать просто вид проверки, которую Вы приводите к сбою. Превращение его от средств, это просто полагает, что IP является переменным, и будет к проверке ключа по сравнению с именем хоста.
Дополнение: Вы могли попытаться только отключить проверку CheckHostIP на то имя:
Host *
[ global settings .. ]
Host very.dynamic.host
CheckHostIP no
Вы могли поместить CheckHostIP no
в Ваш ~/.ssh/config
файл, но это оставляет Вас открытыми для спуфинга нападений. Если Вы не обеспокоены этим, то эта установка должна выключить known_hosts
проверить.
Я использую эти хитрые варианты, чтобы обойти эту проблему. (Открытый ключ моего хоста регенерируется довольно часто. Таким образом, это удаляет проверку IP и ключа)
ssh remoteServerName -l username -o "UserKnownHostsFile=/dev/null"
Вы также можете просто использовать это, если ключ остается тем же, но IP изменяется:
ssh remoteServerName -l username -o "CheckHostIP=no"
Многие ответы здесь будут работать, но технически это обходные пути. OpenSSH уже имеет встроенную функцию с учетом этого: HostKeyAlias
.
В файле .ssh / config добавьте HostKeyAlias
в конфигурацию хоста:
host myserver.example.com
HostKeyAlias myserver.example.com
При этом подключение к серверу myserver.example.com
не будет использовать имя хоста или IP-адрес для локальной ссылки - всегда будет только только используйте данный HostKeyAlias при подключении к этому серверу. Для меня имеет смысл использовать имя хоста, но вы, конечно, можете использовать любой псевдоним, который вам нравится.
Типичные конфигурации для меня для динамических хостов выглядят так:
host myserver
hostname myserver.dyn.example.com
HostKeyAlias myserver.private.example.com
Это также может быть использовано в некоторых малоизвестных сценариях, когда вы знаете, что несколько ваших серверов имеют одинаковые ключи хоста (обычно это должно быть , а не ). Тогда это предотвратит дублирование записей. В будущем, если ключи изменятся законно, вам не придется заменять / удалять несколько записей. Единственный. Серверы Gitlab Geo являются хорошим примером этого.
Что касается очистки файла known_hosts, я бы посоветовал посмотреть другие вопросы / ответы, конкретно связанные с поддержанием / удалением устаревших записей known_hosts. Например, см. Как управлять моим файлом .ssh / known_hosts ; Меня особенно впечатлил ответ user1953828, хотя я вижу, что у него не так много голосов (пока). :)
Я избегаю добавления отпечатков пальцев в мой файл known_hosts
при подключении к машинам AWS переходного периода. Я использую команду типа
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i secret.pem ec2-user@10.0.0.5
для подключения к ним. Она не будет спрашивать, хотите ли вы добавить машину "в список известных хостов". Замените 10.0.0.5
на IP-адрес вашей машины и secret.pem
на полный путь вашего ключа Ssh. Вы все еще получите предупреждение, что 10.0.5
был добавлен, но он действительно исчез в /dev/null
. Я делаю это достаточно часто, чтобы установить псевдоним в моем ~/.profile
alias awsssh='ssh -i secret.pem -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
I reserve ssh ec2-user@example.com
type commands for machines were went to the trouble of check the fingerprint.