Interesting question. dmesg
should have something like this if it's a SATA drive:
dmesg | grep -i SATA
[ 3.972803] ata3: SATA max UDMA/133 cmd 0xe800 ctl 0xe400 bmdma 0xd800 irq 18
[ 3.972807] ata4: SATA max UDMA/133 cmd 0xe000 ctl 0xdc00 bmdma 0xd808 irq 18
I then grep'ed the dmesg
output for "ata3" and found the serial number:
dmesg | grep -in ata3
397:[ 3.972803] ata3: SATA max UDMA/133 cmd 0xe800 ctl 0xe400 bmdma 0xd800 irq 18
409:[ 4.183701] ata3.00: ATA-7: ST3160812AS, 3.ADH, max UDMA/133
410:[ 4.183706] ata3.00: 312500000 sectors, multi 16: LBA48 NCQ (depth 0/32)
411:[ 4.267004] ata3.00: configured for UDMA/133
which could then be looked up smartctl
or hdparm -i /dev/<your disk(s)>
to match serial with device.
I'm sure someone with l33t shell scripting skillz could do this all up on one line, but this should be pretty solid. If any doubts, I'd check the serial number against the manufacturer's Website as Madhatter suggested.
I ran the same dmesg | grep -i SATA
on Ubuntu running on a VMware virtual machine (which treats the virtual drives as SCSI) and a server with SCSI disks; both returned nothing.