Я удалил пространства имен (NS) в своем nvme ssd, и Ubuntu не может распознать устройство

В сторону :вашего (примера?)catи awkбесполезны, и вам не нужны повторные echo|cutи тесты.

После разъяснения того, что вам нужно ввести пароль (s )для удаленного sudo, вам нужно оба позволить sshиспользовать ввод терминала и указать -t, чтобы он пересылал этот ввод как PTY. Это в основном обман SSH вызывает остановку цикла while , хотя вы не достигли того же симптома.

Метод 1 :перенаправить (или передать )стандартный ввод для цикла, но перенаправить его назад для ssh

while read inst type serial; do 
  case ${inst#*-} in
  (DIF1) ssh 

Метод 2 :использовать другой блок -номер (не стандартный )для всех данных

while read <&3 inst type serial; do
  case ${inst#*-} in
  (DIF1) ssh -t user@host1 "sudo blah";;
  (DIF2) ssh -t user@host2 "sudo blech";;
  # more
  esac
done 3

Метод 3 заключается в использовании forцикла (, которого вы не использовали, хотя в вашем вопросе сказано, что вы )читали его аргументы без какого-либо канала.Для вашего исходного Q, который на самом деле использовал только одно поле, это легко:

IFS='
' # split on newline only
set -o noglob # disable globbing
for inst in $(awk '{print $1}' alldata); do
  # as for method 2
done

но ваше редактирование говорит, что вы хотите использовать хотя бы одно другое поле, поэтому вам нужно что-то более уродливое, например:

IFS='
' # split on newline only
set -o noglob # disable globbing
for line in $(awk '{print $1":"$2":"$3}' alldata); do
  IFS=:; set -- $line; inst=$1; serial=$3;
  # as before
done

2
29.01.2019, 21:54
1 ответ

Вы по-прежнему сможете видеть nvme0в /dev--, только записи-nXдолжны исчезнуть. Попробуйте sudo nvme create-ns -s 100000 -b 4096 /dev/nvme0, затем sudo nvme attach -n 1 /dev/nvme0и посмотрите, заработает ли это снова.

0
03.05.2021, 06:04

Теги

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