Как то обратился ко мне artyes с вопросом:
А чем можно смотреть свободное место на диске?
Вообще-то, если дисков SATA или USB не по одному, то есть они отображаются списком — то плевое дело — на нужном диске жмем кнопку пульта INFO и смотрим. А если один SATA и один USB?
Имея доступ с компа рядом все делается просто — с командной строки одной командой df -h.
Но, понимая, что не каждому это надо — учить основы Linux, отправил я человека на CSI-приложение File Manager смотреть. Сам я его не пользую, но какую-то Web-морду он обеспечивает и позволяет смотреть не только остаток места.
Отправил, а сам в то же самое время полез в консоль смотреть — ну куда мне залить очередные 50 гигов?..
Как же так — без компа не обойдешься!!! Не знаю как на Dune в этом случае, но для NMT-200 сводной таблички, доступной с экрана TV явно нет.
Подумал, и родил следующую концепцию
Иде…я?
Идея проста — выводить результат df -h по расписанию (cron) в html-файл. Браузер попкорна умеет отображать примитивные странички, а мне иного вроде и не надо.
Мне нужно опросить все диски, которые смонтированы на мой C-200. Так как все устройства при автоматическом монтировании слинковываются в корень (/), и имеют указатель на реальную папку монтирования (/opt/sybhttpd/localhost.drives/), то конструкция с фильтром grep типа
выведет только нужные метки разделов и ничего лишнего. Остается только причесать и отформатировать вывод (с помощью текстового процессора awk).
А далее нужно для каждого сделать df -h /метка раздела. Придумывать что-то, кроме генерации одним скриптом вспомогательного, который и формирует окончательный вывод таблички, быстро не получилось. Да и зачем — если и так все работает?
drivesize.sh
Изначальный скрипт был не настолько сложен, но борьба за «красивости» увеличила его и сделала труднообъяснимым. Единственное, что облегчил — вынес переменными некоторые параметры. Какие — понятно из их названия.
Минимум, что следует знать:
RNAME — это собственно имя и местоположение результата. Того файла, в который тыкать кнопкой Enter на пульте
REFRESHTIME - это время в секундах, через которое файл перерисовывается на экране сам себя (300 — это 5 минут).
EXC — это исключение. Так share и USB_DRIVE — одно и то же — убираю с вывода share.
#
SNAME="/share/dfh.sh"
RNAME="/share/dh.html"
EXC="share"
BGCOL="navy"
FONTCOL="white"
FONTSZ="36px"
REFRESHTIME="300"
echo "<html><head><title></title> <meta content=\"text/html; charset=utf-8\">" > $RNAME
echo "<meta http-equiv=\"refresh\" content=\""$REFRESHTIME"\"> <meta http-equiv=content-style-type content=text/css>" >> $RNAME
echo "<style type=\"text/css\">" >> $RNAME
echo "body { background-color:"$BGCOL"; }" >> $RNAME
echo "table { color:"$FONTCOL"; background-color:transparent; font-size:"$FONTSZ"; font-weight:bold; }" >> $RNAME
echo "</style></head><body><table width=\"100%\">" >> $RNAME
echo "<tr><td witdh=\"25%\">Label name</td><td witdh=\"25%\">Device</td><td witdh=\"25%\">Total<br>Size</td><td witdh=\"25%\">Free</td></tr><tr><td colspan=\"4\"> </td></tr>" >> $RNAME
ls -al /|grep "/localhost."|awk -v s="$RNAME" -v q="'" -v b="\"</td>" -v e="$EXC" '{ if ($9!=e) print "echo \"<tr><td>"$9"</td>\" >> "s"; df -h /"$9"|grep dev|awk "q"{print \"<td>\"$1"b"<td>\"$2"b"<td>\"$4"b"</tr>\" }"q" >> "s }'>$SNAME
chmod +x $SNAME
$SNAME
echo "</table></body></html>" >> $RNAME
Установка
Копируем в любое удобное место и говорим в консоли чтобы файл получил атрибут запускаемости:
Далее, навешиваем в свое расписание строку типа
Как работать с cron я рассказывал ранее здесь.
Для работы скрипта необходимы LTU — без них никуда
P.S. И не забываем, что текстовый файл для Linux — поэтому сохраняем его в формате перевод строки «LF» (а не «CR+LF»)- Far Manager вам в помошь.
9 июня 2011 г. в 01:24
Только одна фигня — скрипт clutch, запускающий Трансмишин, сбрасывает crontab, так как содержит непонятные и, судя по всему, ненужные строки, которые Padavan, не подумав, переписал из оригинального clutch. Надо будет сказать ему, чтобы поправил.
9 июня 2011 г. в 03:08
Рома, не повторяй своего коммента, я же уже отвечал http://nmt200.ru/hand/wildflexy/rabotaem-po-raspisaniyu-cron#comment-2510
9 июня 2011 г. в 06:53
WildFlexy, спасибо за статью. Хочу поделиться своим опытом: для меня самое актуальное — это знать объем свободного места на том диске, куда производит загрузку файлов transmission перед загрузкой очередного торрента. После установки последней версии LTU c transmission 2.31 с использованием последней версии Transmission Remote GUI я в нижней статусной строке окна программы Transmission Remote GUI вижу актуальное свободное место на том HDD, куда назначена загрузка торрентов.
9 июня 2011 г. в 10:47
покажи картинку пожалуйста
10 июня 2011 г. в 02:21
У меня сейчас назначен раздел /Transcend.
Это USB-диск, и в моем списке он один из четырех, поэтому не проблема смотреть в штатном интерфейсе по INFO.
Но так как периодически упорядочиваю коллекцию, то знать где осталось сколько места хочу сразу же, не шастая по каждому из дисков в отдельности.
При моем количестве девайсов (список на скриншоте) уже стало лениво топтать кнопочки и запоминать цифирки. А лень — двигатель прогресса
9 июня 2011 г. в 16:30
Попкорн поддерживает CGI, поэтому все можно сделать без крона. Открываем страничку и сразу видим список и свободное место. Надо на досуге сделать.
6 ноября 2011 г. в 16:51
Не дошли еще руки?