Не удалось добавить хост в список известных хостов

Ответ на ваш вопрос¹ прост:

mkfs.msdos -n 'dickEt' -I /dev/sdd1

Тем не менее, он имеет следующие ограничения:

  • Максимальный размер файла — 4 ГБ
  • Максимальный размер раздела — 2 ТБ

ОС -Совместимость с файловой системой (мини )матрица:

                   FAT  NTFS EXT[2..4] BTRFS  XFS HPFS
Amiga               x
MS-DOS, Win95, 98   x
NT, W2K,... W10    x     x      2
MacOS               x     3      4                  x
Linux               x     x      x       x      x   x

Примечание 1:Вы просили обеспечить максимальную совместимость с ОС, и это единственный ответ, поскольку он совместим с большинством ОС , поскольку это одна из старейших и наименее способных файловых систем.(Не ВСЕ ОС! Э.Г. C64 не поддерживает FAT!)
Примечание 2.:Коммерческое пробное ПО, если вам нужны возможности записи.
Примечание 3:Коммерческое программное обеспечение, если вам нужны возможности записи.
Примечание 4:Только чтение -

0
17.03.2021, 17:53
1 ответ

Команда выглядит так, как будто вы пытаетесь уничтожить текущее содержимое /var/log/messagesсразу на нескольких хостах. Это похоже на то, что может сделать злонамеренный хакер, пытаясь замести следы.

Я предполагаю, что machines.txtв начале должно быть cat machines.txt. Если нет, то это означает, что machines.txtна самом деле будет исполняемым файлом, и что вы называете свои файлы таким образом, чтобы их не было видно; это еще одна вещь, которую иногда делают злонамеренные хакеры, пытающиеся скрыть свои инструменты во взломанной системе.

Поскольку вы передаете данные по конвейеру в xargs, передаваемые данные заменяют стандартный входной поток для процесса xargs. По умолчанию дочерние процессы xargsбудут получать свой стандартный ввод, перенаправленный из /dev/null, чтобы не мешать вводу, передаваемому по конвейеру, в xargs.Команда sshобнаружит, что ее стандартный ввод не является терминалом, и предположит, что она работает в пакетном режиме, т. е. попытается выполнить свою работу, вообще не взаимодействуя с пользователем.

xargs -I {}...выполняет оставшуюся часть командной строки один раз для каждой строки в machines.txt. Сообщения об ошибках могут быть выведены командой ssh, выполненной для самой первой строки machines.txt, или несколько строк могут быть уже успешно выполнены без вывода сообщений до того, как один из экземпляров команды sshобнаружит ошибку; из вывода невозможно с полной уверенностью сказать, какая из строк machines.txtиспользовалась, когда произошла ошибка.

Первое сообщение:

Failed to add the host to the list of known hosts (/home/agilos/.ssh/known_hosts).

— предупреждение; SSH пытается записать открытый ключ хоста каждой новой системы, к которой он подключается, в файл known_hosts, чтобы его можно было проверить при будущих подключениях, но на этот раз по какой-то причине это не удалось. Фактическая попытка подключения может продолжаться.

Второе сообщение:

Permission denied (publickey).

означает, что ваш ключ аутентификации SSH не был принят одним из хостов. Поскольку команда sshвыполняется в пакетном режиме, она знала, что не следует даже пытаться проверять подлинность с помощью пароля, поскольку пакетный режим обычно означает, что команда выполняется в контексте, который не позволяет взаимодействовать с локальным пользователем. Таким образом, одна из попыток подключения SSH не удалась, поскольку не удалось пройти аутентификацию.

Третье сообщение:

xargs: ssh: exited with status 255; aborting

исходит от команды xargs, так как она обнаруживает, что одна из выполняемых ею команд sshна основе содержимого конвейера -в данных завершилась с ошибкой. SSH выходит со статусом 255 каждый раз, когда возникает ошибка подключения; любой другой код ошибки будет результатом выполнения удаленной команды.

Вы пытаетесь выполнить команду sudo echo " " > /var/log/messagesна нескольких хостах, используя xargs,но сама команда не будет делать то, что вы пытаетесь сделать :оболочка сначала настроит перенаправления перед выполнением команды, и поэтому с этой командной строкой команда sudoв конечном итоге выполнит только часть echo " "с привилегиями root, в то время как перенаправление (часть > /var/log/messages)будет работать от имени пользователя, под которым вы вошли в систему... и поэтому, скорее всего, вообще ничего не сделает.

Если у ваших инстансов была соответствующая -настройка logrotateи разрешение на запуск sudoбез запроса пароля, вы могли бы запустить дополнительный раунд ротации журналов на всех инстансах с чем-то вроде:

xargs -I {} ssh {} sudo /usr/sbin/logrotate /etc/logrotate.conf < machines.txt

Таким образом, не требуется никакого сложного цитирования -внутри цитирования -.

Если вам действительно нужно обрезать фактический /var/log/messages, проблема «перенаправления на файл с правами root через sudo» обычно решается с помощью команды teeс sudo. Итак, ваша командная строка может выглядеть так:

xargs -I {} ssh {} bash -c "'echo " " | sudo tee /var/log/messages'" < machines.txt

Но сначала вам нужно решить проблему с аутентификацией SSH, а для этого вам нужно знать, какой хост не проходит аутентификацию по ключу SSH. Кроме того, echo " "добавляет ненужный пробел в начале первой строки журнала; вместо этого лучше просто обрезать, используя /dev/null.

xargs -I {} ssh {} bash -c "'sudo tee /var/log/messages </dev/null && hostname'" < machines.txt

Это выведет имя хоста каждой системы, которая успешно усекла свой журнал, поэтому вы будете знать, какой экземпляр в вашем machines.txtне проходит аутентификацию SSH.

1
18.03.2021, 22:24

Теги

Похожие вопросы