Found while doing forensics on some rediscovered loose flash drives.

  • @[email protected]
    link
    fedilink
    English
    111 months ago

    For instance: Get the temperature of the “Composite” sensor from this output:

    $ sensors
    k10temp-pci-00c3
    Adapter: PCI adapter
    Tctl:         +37.1°C  
    
    BAT1-acpi-0
    Adapter: ACPI interface
    in0:          16.07 V  
    curr1:         1.80 A  
    
    amdgpu-pci-0500
    Adapter: PCI adapter
    vddgfx:        1.46 V  
    vddnb:       918.00 mV 
    edge:         +35.0°C  
    slowPPT:     1000.00 uW 
    
    nvme-pci-0200
    Adapter: PCI adapter
    Composite:    +28.9°C  (low  =  -5.2°C, high = +79.8°C)
                           (crit = +84.8°C)
    
    acpitz-acpi-0
    Adapter: ACPI interface
    temp1:        +37.0°C  (crit = +120.0°C)
    

    Without a cryptic awk incantation that only wizards can understand, that would be:

    sensors | grep Composite | grep -Po 'Composite:.*?C' | grep -Eo '[[:digit:]]{1,2}\.[[:digit:]]'

    • Doc Avid Mornington
      link
      fedilink
      English
      211 months ago

      I think I misunderstood you, when you said “manually”, to mean as a human intervention in the process. What you’re showing here is an extra processing step, but I wouldn’t call that manual. Just want to clear that up, but I’m still down to play.

      Instead of three greps, you could use one sed or awk. I don’t think there’s anything particularly wizardly about awk, and it would be a lot less cryptic, to me, than this chain of greps.

      But a much better idea would be to use sensors -j to get json output, intended for machine reading, and pass that to jq. Since I don’t have the same sensors output as you, I’m not sure exactly what that would be, but I am guessing probably something like:

      sensors -j | jq '."nvme-pci-0200".Composite.composite_input'
      

      I look forward to seeing how you would do this in PS. As I said previously, I don’t know it at all, so I’m not sure what you’re comparing this to.

      • @[email protected]
        link
        fedilink
        English
        3
        edit-2
        11 months ago

        What you’re showing here is an extra processing step, but I wouldn’t call that manual.

        Yes, it’s not manual by the dictionary definition, but it is an extra step. This is another meaning of manual in my particular bubble [Edit: that I didn’t think to specify].

        But a much better idea would be to use sensors -j to get json output, intended for machine reading, and pass that to jq.

        This is my initial point, exactly. Dealing with objects is way easier than using the ‘default’ line-wise processing. Only Powershell made that the default, while in Linux you need to hope that utilities have an option to toggle it on – and then also have jq installed to process the objects.

        I look forward to seeing how you would do this in PS. As I said previously, I don’t know it at all, so I’m not sure what you’re comparing this to.

        [Edit, since I forgot to answer your main point:] I don’t program in PS. I don’t like the verbosity. But I do think MS has a point in pushing objects as the prime unit in processing instead of lines.