Skip to content

Instantly share code, notes, and snippets.

@nunogt
Created September 9, 2015 14:39
Show Gist options
  • Save nunogt/68a3e5ea67b4a0aa08d6 to your computer and use it in GitHub Desktop.
Save nunogt/68a3e5ea67b4a0aa08d6 to your computer and use it in GitHub Desktop.

Revisions

  1. nunogt created this gist Sep 9, 2015.
    40 changes: 40 additions & 0 deletions dmesg.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,40 @@
    #!/bin/bash
    # note: inspired by Peter
    #
    # *UPDATE 1* now we're no longer parsing ls output
    # *UPDATE 2* now we're using an array instead of the <<< operator, which on its
    # part insists on a writable /tmp directory:
    # restricted environments with read-only access often won't allow you that

    # save original IFS
    OLDIFS="$IFS"

    for i in /sys/block/sd*; do
    readlink $i |
    sed 's^\.\./devices^/sys/devices^ ;
    s^/host[0-9]\{1,2\}/target^ ^ ;
    s^/[0-9]\{1,2\}\(:[0-9]\)\{3\}/block/^ ^' \
    \
    |
    while IFS=' ' read Path HostFull ID
    do

    # OLD line: left in for reasons of readability
    # IFS=: read HostMain HostMid HostSub <<< "$HostFull"

    # NEW lines: will now also work without a hitch on r/o environments
    IFS=: h=($HostFull)
    HostMain=${h[0]}; HostMid=${h[1]}; HostSub=${h[2]}

    if echo $Path | grep -q '/usb[0-9]*/'; then
    echo "(Device $ID is not an ATA device, but a USB device [e. g. a pen drive])"
    else
    echo $ID: ata$(< "$Path/host$HostMain/scsi_host/host$HostMain/unique_id").$HostMid$HostSub
    fi

    done

    done

    # restore original IFS
    IFS="$OLDIFS"