Pull to refresh

Comments 7

Надо такой же, но для постов сделать — чтобы писал рейтинг, просмотры, избранное, количество комментариев, с точками на графике: выход на главную, попадание в лучшее за сутки.
Меня задело слово «самый» в заголовке статьи:
#!/bin/bash
username='burik666'
if [ "$1" = "config" ]; then
    echo "graph_title KarmaGraph $username
graph_category web 
graph_vlabel #
karma.label Karma
rating.label Rating"
    exit
fi
curl -s http://habrahabr.ru/api/profile/$username/|grep -E '<karma|rating>'|sed -r 's/<([^>]+)>([^<]+)<\/[^>]+>/\1.value \2/g'
спасибо за скрипт — прикручу к conky
Неоптимально! Фиксед:
#!/bin/sh
username='Self_Perfection'
if [ «$1» = «config» ]; then
    echo «graph_title KarmaGraph $username
graph_category web 
graph_vlabel #
karma.label Karma
rating.label Rating»
    exit
fi
wget -qO- http://habrahabr.ru/api/profile/$username/|sed -nr '/karma>|rating>/{s/<([^>]+)>([^<]+)<\/[^>]+>/\1.value \2/;p}'

  1. /bin/sh вместо /bin/bash. На убунточке, например, будет использоваться dash, а он гораздо легче
  2. wget вместо curl
  3. Убран grep — на один форк меньше


Можно и от sed избавиться, вырезать нужные данные из xml чисто силами sh, или даже избавиться от wget, если воспользоваться фичей /dev/tcp баша. Но скрипт станет гораздо длиннее и хуже читаем.
Я тут на днях узнал, что баш умеет регулярные выражения. Не удержался и переписал на чистом баше.
#!/bin/bash
username='Self_Perfection'
if [ "$1" = "config" ]; then
    echo "graph_title KarmaGraph $username
graph_category web 
graph_vlabel #
karma.label Karma
rating.label Rating"
    exit
fi

exec 33<>/dev/tcp/habrahabr.ru/80
echo -e "GET /api/profile/$username/ HTTP/1.0\r\nHost: habrahabr.ru\r\n" >&33
read -d $'\0' REPLY <&33

for v in karma rating; do
    if [[ $REPLY =~ "<$v>"(.*)"</$v>" ]]; then
        echo "$v.value ${BASH_REMATCH[1]}"
    fi
done


Не так уж и страшно
Спасибо, интересно.
За комментарии как в этой статье мы и любим хабр :-)
В общем идеал не достижим даже с третьей итерации, так что перенёс к себе в гитхабчик.

Главное, что изменил: юзернейм теперь указывается традиционным мунинским способом указания ресурса для мониторинга — дописыванием к имени плагина через подчёркивание. Так что теперь установка кармографа предельно упростилась:

sudo wget -O /etc/munin/plugins/habrakarma_ВАШЛОГИН https://github.com/Self-Perfection/munin-habrakarma/raw/master/habrakarma_ && sudo chmod -c 755 /etc/munin/plugins/habrakarma_* && sudo systemctl restart munin-node


Нужно только в команде выше заменить логин на ваш реальный и, возможно, заменить команду перезапуска munin-node на специфичную для вашего дистрибутива. И ВСЁ
Sign up to leave a comment.

Articles