Мне нужно выяснить номер физического диска, который принадлежит каждому устройству в массиве хранения OmniOS (Solaris 10). Я могу получить список устройств,Как сортировать строки несколько раз?
cfgadm -al | grep disk-path | cut -c 6-21 | tr 'a-z' 'A-Z'
где выход может выглядеть
5000C5005CF65F14
5000C5004F30CC82
...
Так моя идея написать сценарий, где я dd
каждое устройство и смотреть светодиоды, а затем введите номер светодиода, который вспыхнул. Поскольку на обеих сторонах массива хранения есть светодиоды, мне нужно иметь возможность запускать сценарий несколько раз, и каждый раз, когда я ввожу место на диске, мне не нужно будет вводить его снова.
Моя текущая идея заключается в том, чтобы перебрать список имен устройств я получаю от выше команды, а затем сделать что-то вроде этого
system("dd if=/dev/dsk/c1t${device}d0p0 of=/dev/null bs=1k count=100");
print "which led flashed: ";
my $disk = <STDIN>;
chomp $disk;
system("echo $disk $device >> disk.sorted");
, который будет производить такие строки
21 5000C5005CF65F14
09 5000C5004F30CC82
...
где я увидели светодиод 21 вспышки в первом случае и видели во главе 9 во втором случае. Есть 70 дисков.
Моя проблема
Я не могу придумать с хорошей идеей, как я могу написать скрипт, который может быть запущен несколько раз, и каждый раз, когда он запускается не разрушит мои предыдущие значения я имею вошел.
Любые идеи, как это сделать?
Я прототипирую его на Linux.
Вы можете уточнить "это не разрушат мои предыдущие значения я ввели"? В Perl-коде, который вы написали, каждый раз, когда он запускается, новые значения будут добавлены в файл disk.sorted, а предыдущие не должны быть уничтожены. – dms
На самом деле также неплохая идея, но я бы переключил использование $ f в качестве имени выходного файла и написал $ n в него. И вам нужно перенаправить выход с помощью >> для добавления в файл. – Harald