LINUX.ORG.RU

Вопрос по BASH


0

0

Есть такая команда: df -h | grep ^/dev | awk '{print $1}'
Вопрос: как передать вывод этой команды этилите hddtemp? В общем требуется, чтобы скрипт определил жесткие диски и вывел их температуру. Спасибо

anonymous

Ответ на: комментарий от boombick

Спасибо тебе добрый человек :)

anonymous
()
Ответ на: комментарий от anonymous

Ошибся однако:
debian:/home/sima# hddtemp /dev/sd* | awk '{print $1,$4}'
/dev/sda: 44°C
/dev/sda1: 44°C
/dev/sda2: 44°C
/dev/sda5: 44°C
/dev/sdb:
/dev/sdb1:
А так:

debian:/home/sima# hddtemp /dev/sd* |cut -d: -f 1,3
/dev/sda: 44°C
/dev/sda1: 44°C
/dev/sda2: 44°C
/dev/sda5: 44°C
/dev/sdb: 45°C
/dev/sdb1: 45°C

anonymous
()
Ответ на: комментарий от anonymous

Это чем же? Нафига awk лишний раз дергать, если есть cut, заточенный именно под это? Это раз.. А два - не факт, что в названии винчестера будет пробел... Да и вообще, тебе про это название нифига не известно - известен лишь разделитель полей ':'.. так что либо с cut, либо

hddtemp `df -h | grep ^/dev | awk '{print $1}'`| awk -F: '{print $1,$3}'

Но вариант с cut мне больше нравится :)

boombick ★★★★★
()
Ответ на: комментарий от gena2x

А не подскажите как можно выровнять вывод? Точнее второй столбец. Огромное Спасибо за внимание к этой интересной теме :)
/dev/sda 44°C
/dev/sda1 44°C
/dev/sda2 44°C
/dev/sda5 44°C
/dev/sdb 45°C
/dev/sdb1 45°C

anonymous
()
Ответ на: комментарий от anonymous

Два варианта:

Для Ъ:

1. hddtemp `df -h|awk '/^\/dev/ {print $1}'`| awk -F: '{printf "%-9s %s\n",$1,$2}'

Ддя не Ъ:

2. hddtemp `df -h|awk '/^\/dev/ {print $1}'`|cut -d: -f 1,3|sed 's/[a-z] /\0 /'

gena2x ★★★
()
Ответ на: комментарий от gena2x

split() из awk'а уже не Ъ?
неужели не осилили сделать одной инкарнацией awk и скормить вывод по xargs в hddtemp?

anonymous
()
Ответ на: комментарий от anonymous

> split() из awk'а уже не Ъ?

ах, сорри, не о том подумал. Но все равно решение выглядит через пятую точку с двумя инкарнациями awk.

anonymous
()

А у разных партиций бывает разная температура? О_О Имхо, кошерного варианта ещё не проскачило :-)

Anoxemian ★★★★★
()
Ответ на: комментарий от boombick

Кошерный вариант:
sudo hddtemp /dev/[sh]d[a-z] | cut -d: -f 1,3
И выравнивать ничего не надо :)

anonymous
()
Ответ на: комментарий от Anoxemian

>А у разных партиций бывает разная температура? О_О Имхо, кошерного варианта ещё не проскачило.

Верна! А у флешек и cd её нету наверное вообще...

for F in /sys/block/[sh]d*/removable; do if [ `cat $F` = 0 ]; then sudo hddtemp /dev/"`echo $F|sed 's%/[^/]*$%%'|sed 's%^.*/%%'`"; fi ;done

gena2x ★★★
()
Ответ на: комментарий от gena2x

В споре рождается истина :) ИМХО конечно, но это лучший вариант:
sudo hddtemp /dev/[sh]d[a-z] | cut -d: -f 1,3
Всем миром надумали. Впрочем теперь понятно, что изобрести велосипед очень просто :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.