ansitest/OSX/mkgpt-osx.sh
2021-04-08 13:04:25 -05:00

103 lines
3.1 KiB
Bash

#!/bin/bash
# mod for osx 2019.0418
# typically "disk9" but also want to be able to process long-form by-disk or by-path
# NOTE no wwn's here to worry about
argg="$1"
#source ~/bin/failexit.mrg
# failexit.mrg
function failexit () {
echo '! Something failed! Code: '"$1 $2" # code # (and optional description)
exit $1
}
#~/bin/boojum/
dbi-commasep-osx.sh # run direct, don't SOURCE this
# find short form
infile1=/tmp/dbi-commasep--boojum.csv
infile2=/tmp/dbi-eqsep--boojum.txt
[ -e "$infile1" ] || failexit 404 "$infile1 file not found!"
# leave orig file in place, replace all commas with '=' to file2 for our use
sed 's/,/=/g' $infile1 > $infile2
# 2nd pass - delete all /dev/ in infile2 in-place
sed -i 's|/dev/||g' $infile2
DEV=/dev
DBI=/var/run/disk/by-id
DBP=/var/run/disk/by-path
DBS=/var/run/disk/by-serial
# fryserver will have multiple results per-device
# if length = 5 we already have short "disk9", else search for long and GET shorty
# ${#string}
if [ ${#argg} -lt 6 ]; then
sdev=$argg
else
# grep for what we were passed, take 1st result, print 1st field = shortdev
sdev=`grep $argg $infile2 |head -n1 |awk -F'=' '{ print $1 }'`
fi
[ $(echo $sdev |grep -c "disk") -gt 0 ] || failexit 502 "Teh craziness happen - cannot find shortdev from $argg"
[ -e /dev/$sdev ] || failexit 999 "Short-form device $argg does not exist in /dev!"
smartctl -a /dev/$sdev |head -n 16
#fdisk -l /dev/$sdev |awk 'NF>0' 2>/dev/null
diskutil info /dev/$sdev |awk 'NF>0' # skip blank lines
ls -l $DBI/* $DBP/* $DBS/* |grep $argg |awk '{ print $9" "$10" "$11 }' |column -t
#ls -l /dev/disk/by-path|grep $argg
echo "THIS WILL DESTRUCTIVELY APPLY A GPT LABEL + ZPOOL LABELCLEAR to $argg // $sdev"
echo "-ARE YOU SURE- PK OR ^C"
read
#exit # EARLY!
# COMMIT!
# REF: https://openzfsonosx.org/forum/viewtopic.php?f=11&t=2847
(set -x
zpool labelclear /dev/$sdev
# zpool labelclear -f /dev/$sdev''s1 ## ONLY ENABLE IF NEEDED
# diskutil partitionDisk $sdev GPT 1 ## no way to do this easily
gpt destroy $sdev && gpt create $sdev
# parted -s /dev/$sdev mklabel gpt || failexit 99 "! Failed to apply GPT label to /dev/$sdev"
)
#fdisk -l /dev/$sdev
diskutil list $sdev
exit;
2017.1207 mod to find drive using short dev/sdX or long dev/disk/by-id or by-path
# TODO handle wwn BUT deny -part9
# less /tmp/dbi-eqsep--boojum.txt
sda=ata-ST4000VN008-2DR166_ZGY005C6
sda=pci-0000:01:00.0-sas-0x4433221100000000-lun-0
sdb=ata-ST4000VN000-2AH166_WDH0SB5N
sdb=pci-0000:01:00.0-sas-0x4433221103000000-lun-0
sdc=ata-ST4000VN000-1H4168_Z3076XVL
sdc=pci-0000:01:00.0-sas-0x4433221101000000-lun-0
sdd=ata-ST4000VN000-1H4168_Z3073Z7X
sdd=pci-0000:01:00.0-sas-0x4433221102000000-lun-0
sde=ata-ST9500420AS_5VJ5FDYE
sde=pci-0000:02:00.0-sas-0x4433221101000000-lun-0
sdf=ata-ST1000LM024_HN-M101MBB_S2RQJ9CC903375
sdf=pci-0000:02:00.0-sas-0x4433221103000000-lun-0
sdg=pci-0000:00:14.0-usb-0:1:1.0-scsi-0:0:0:0
sdg=usb-SanDisk_Ultra_Fit_4C530001171117106334-0:0
sdh=ata-ST2000VN000-1HJ164_W523GA5J
sdi=ata-ST2000VN000-1HJ164_W5238TSL
sdj=ata-ST2000VN004-2E4164_Z521TRH4
sdk=ata-ST2000VN000-1HJ164_W7212LTE
sdl=ata-ST2000VN000-1HJ164_W72127JB
sdm=ata-ST2000VN000-1HJ164_Z520DLXJ
sr0=ata-HL-DT-ST_DVDRAM_GH24NSB0_K2EG1QE3246