Викладую нову версію свого скрипта aping. Код трохи підчистив від непотребу, а ще тепер він виводить менше сміття.

#!/usr/bin/env bash

number=0
successed=0
failed=0
timeout=1

if [[ "-$1" == "-" ]]
then
        echo "Usage: `basename "$0"` <hostname | IP>"
        exit 1
fi

prev="undefined"

while true
do
        ((number++))
        echo -n "[#$number, `date +%H:%M:%S`, ok: $successed, fail: $failed] pinging $1..."
        ping -c 1 -q -W $timeout $1 >/dev/null 2>&1
        cur="$?"
        if [[ "$cur" == "0" ]]
        then
                ((successed++))
                echo -n "OK"
        else
                ((failed++))
                echo -n "FAIL"
        fi
        echo -n -e "\033[0K"
        if [[ "$cur" == "$prev" || "$prev" == "undefined" ]]
        then
                echo -n -e '\r'
        else
                echo -n -e '\n'
        fi
        prev="$cur"
        sleep 1
done

Є невелика клієнтська мережа на десяток активних пристроїв, які потрібно моніторити на предмет доступності. Піднімати для цього Нагіос/Ісінгу або Заббікс не дуже хотілося, тим більше, що мережа доволі статична. Так народився цей скрипт.
Читати далі »

Звісно, класикою жанру вважається bash, але хто я такий, що просто ставити й використовувати те, що використовує більшість народу :)?

Дуже довго я сидів на zsh, і не можу про нього нічого сказати поганого — навпаки, дуже зручна й потужна штука.

Але кілька місяців тому я відкрив для себе fish із його кольоровою підсвіткою команд і зручною історією, і тепер використовую його. Не знаю, чи надовго це, але принаймні *поки* зручно.