Как я могу jq строку из файла с удаленного сервера?

Чтобы получить доступ к файлам на диске, вам необходимо смонтировать раздел, в котором они хранится. При монтировании к каталогу прикрепляется область хранения; после монтирования файлы в этой области хранения будут доступны в этом каталоге. После того, как хранилище смонтировано в каталоге, просто перейдите в этот каталог в Filezilla.

fdisk сообщает вам, что внешний диск разделен на три раздела, все из которых, по-видимому, являются томами RAID. Я пишу «очевидно», потому что тип, указанный в разделе, является лишь условием, Linux на самом деле не заботится. Немного странно иметь один диск с томами RAID. Чтобы узнать, что находится в этих томах, выполните

file -s /dev/sdb?

. Другая полезная команда для просмотра сводки доступных томов хранения - это lsblk .

Если у вас действительно есть тома RAID, вам нужно собрать их с помощью mdadm -A . Команда выглядит так, чтобы собрать двухдисковый том RAID:

mdadm -A /dev/md0 /dev/sdb1 /dev/sdc1

Затем, чтобы смонтировать его, используйте команду mount для существующего каталога.

mkdir /media/md0
mount /dev/md0 /media/md0

(Выбор одного и того же имени для каталога в / media и для устройства в / dev - это просто соглашение.)

Может оказаться, что у вас есть, фактически, LVM томов. Если это так, запустите pvs или pvdisplay , чтобы увидеть список известных физических томов LVM (то есть разделов хранилища). Если томов, которые вы ищете, нет в списке, запустите pvscan и повторите попытку. LVM - это уровень абстракции между томами хранения и контентом. Контент хранится в логических томах. Чтобы увидеть список логических томов, запустите lvs или lvdisplay . Это сообщит вам имена доступных логических томов (LV) и групп томов (VG), в которых они находятся. Чтобы подключить логический том LVM с именем mylv в группе томов с именем myvg , используйте

mount /dev/mapper/myvg-mylv /media/mylv

Эти сложности необходимы только в том случае, если разделы не содержат напрямую файловые системы. Чтобы смонтировать файловую систему в разделе, вам нужна только команда mount и существующий каталог. С томами RAID и LVM все обычно выполняется автоматически во время загрузки, но это не касается съемных дисков.

Если разделы содержат файловые системы, usbmount настраивает их так, чтобы они монтировались автоматически при вставке USB-накопителя.Однако я не думаю, что он может обрабатывать тома RAID или LVM.

Вас также может заинтересовать pmount , который позволяет монтировать USB-накопители вручную пользователям без полномочий root.

Не забудьте все размонтировать перед отключением накопителя, иначе возможно повреждение данных.

0
18.02.2019, 15:45
2 ответа

Похоже, так и должно быть

"$(echo ${remote_serial} | jq '.serialNumber')"

вместо

"${remote_serial | jq '.serialNumber'}"
0
28.01.2020, 02:41

Не нужно усложнять. Просто возьмите JSON с удаленного хоста и передайте его через jq, а затем сделайте то же самое локально. Тогда сравните. Если удаленный файл отсутствует, вы получите сообщение об ошибке (, которое мы можем сбросить ), и серийные номера будут сравниваться с разными (, если локальный серийный номер также отсутствует ).

r_serial=$( ssh -q -i "$pathToPem" "$sshUsernameIp" cat "$remote_serial" 2>/dev/null | jq -r '.serialNumber' )
l_serial=$( jq -r '.serialNumber' serialNumber.json )

if [ "$r_serial" = "$l_serial" ]; then
    echo 'same'
else
    echo 'different (or missing)'
fi

Предполагается, что $remote_serial— это путь к документу JSON на удаленном компьютере.

Обратите также внимание на заключение в кавычки расширений переменных в вызове ssh.


Фактическая ошибка, которую вы получаете, связана с тем, что

"${remote_serial | jq '.serialNumber'}"

не является допустимым расширением переменной. Возможно, вы хотели использовать что-то вроде

"$( printf '%s\n' "$remote_serial" | jq '.serialNumber' )"

, но это предполагает, что $remote_serialсодержит содержимое документа JSON.

1
28.01.2020, 02:41

Теги

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