Кто в офисе?
Побывал сегодня на работе и, в перерыве между делами, написал небольшой скрипт на bash.
На оптимальность решений не претендую, конечно, всё равно основное время работы — это ожидание данных из сокета.
# Кто сегодня в офисе?
# private data vars
WAPIHOST='██████.██████-████.██'
SAPIHOST='█████.██████.██'
SAPI='/█████/██████.xhtml?██████████=█&█████_██=██'
# non-private data vars
WAPI='/where/%s'
NOW=$(date +%s)
function whereAreYou {
exec 3<>/dev/tcp/$WAPIHOST/80
echo -e "GET ${WAPI/\%s/$1} HTTP/1.0\nHost: $WAPIHOST\n\n" >&3
local DATA=$(grep -E '^.?$' -A1 <&3)
if [[ ! $DATA =~ 'VPN' && $DATA =~ 'updated_at' ]]; then
local date=$(echo $DATA | sed -E 's/^.*updated_at"[^"]+"([^"]+).+/\1/' | xargs -Io date -d'o' +%s)
if [ $(($NOW-$date)) -le 3600 ]; then
echo "$1 - $(date -d@$date +%k:%M)"
fi
fi
}
exec 4<>/dev/tcp/$SAPIHOST/80
echo -e "GET $SAPI HTTP/1.0\nHost: $SAPIHOST\n\n" >&4
while read -r line <&4; do
nick=$(echo $line | egrep -o "href='http://$SAPIHOST/\w+" | cut -b$((15+${#SAPIHOST}))-)
[ -n "$nick" ] && whereAreYou $nick
doneЧитайте также

Есть такая программа — coconutBattery, красиво показывает под MacOS X состояние батареи и некоторые другие характеристики. Поскольку я тут тренируюсь писать под Bash, решил сегодня повторить её функционал.
2011
Обработка данных интернет-клиента «Альфа-банка»
Накидал небольшую программу для обработки данных из интернет-клиента «Альфа-банка». Первым параметром указывается CSV-файл, выгруженный из клиента, на выходе три столбца — дата операции, сумма и описание.
2011
DBF → text
Попросили сконвертировать кучу досовских файлов формата DBF (dBase) во что-нибудь путное. Вдруг кому-то ещё понадобится, публикую решение.
2014
Комментарии 12
exec 3/dev/tcp/$WAPIHOST/80
Платформозависимо. :(
Что ж поделать? :)
Все конструкции этого скрипта знакомы?
Комментарий для анонимус:
Тогда зачем вообще это писать на баше? Я хотел решитькакую-то задачу, попробовав поработать с сокетами.
да
А можно было
хз. вроде достаточно просто все.
зависит от характера того что там отдается по http.
не скажу как бы я делал.
JSON там.