vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Тут благодаря идее [livejournal.com profile] yurikhan написал себе шелловский скриптик, который рисует на экране морду свитча с горящими (или не горящими) лампочками линков. Вот так:

vitus@alcor$ ./switchface 
+----------------------+
| (o)   (O) (o) (O) ( )|
+----------------------+


Чтобы не надо было идти в коридор, открывать шкаф, и залезать на стул, чтобы увидеть физические лампочки.

Большая буква O - это 1000baseT, маленькая o - 100baseT. Факт наличия full-duplex решил пока не отображать.


#!/bin/bash
declare -a p
for i in `seq 0 4`; do
   msg=`/sbin/swconfig dev switch0 port $i get link`
   case "$msg" in
	*link:down*)
	    p[$i]=" "
	;;
	*speed:100baseT*)
	    p[$i]="o"
	;;
        *speed:1000baseT*)
            p[$i]="O"
        ;;
   esac
done

echo '+----------------------+'
echo "| (${p[3]})   (${p[4]}) (${p[0]}) (${p[1]}) (${p[2]})|"
echo '+----------------------+'

Date: 2016-07-15 12:49 pm (UTC)
From: [identity profile] hrenov-drummer.livejournal.com
А в чем фишка `seq 0 4` вместо {0..4}?

Ха!

Date: 2016-07-15 12:55 pm (UTC)
de_nada: (Default)
From: [personal profile] de_nada





Это, типа, "музыкой навеяло"? То бишь недавним постом Сэнты об командную строку и прочие цээмдэшники? ;)

С уважением.

Date: 2016-07-15 01:03 pm (UTC)
From: [identity profile] nomadmoon.livejournal.com
juniper> show chassis led ^)

Date: 2016-07-15 02:57 pm (UTC)
From: [identity profile] cae32.livejournal.com
Если дописать, там местами sdk есть.

Date: 2016-07-15 03:45 pm (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan

Чуть обобщил для поддержки других типов портов, добавил цвета:

#!/bin/sh

off=8
amber=220
green=10

check () {
	out=$($1 2>/dev/null)
	case "$out" in
	*$2*)
		tput setaf $off ;;
	*$3*)
		tput setaf $amber ;;
	*$4*)
		tput setaf $green ;;
	esac
}

method_swc () {
	check "/sbin/swconfig dev $1 port $2 get link" link:down speed:100baseT speed:1000baseT
}

method_etht () {
	check "/sbin/ethtool $1" 'Link detected: no' 'Speed: 100Mb/s' 'Speed: 1000Mb/s'
}

get () {
	method=$1
	shift
	method_$method "$@"
	echo -n '■ '
	tput sgr0
}

draw () {
	echo '┌───────────────────────────┐'
	echo "│  $1 $2 $3 $4  $5   $6     │"
	echo '└───────────────────────────┘'
}

draw "$(get swc switch0 2)" \
	"$(get swc switch0 1)" \
	"$(get swc switch0 0)" \
	"$(get swc switch0 4)" \
	"$(get swc switch0 3)" \
	"$(get etht usb0)"

Date: 2016-07-16 06:41 am (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan
Если в шелловском скрипте приходится использовать более двух функций, это повод задуматься о переписывании на perl или python.

У меня аналогичная эвристика по отношению к массивам (и арифметике, но её здесь пока ещё нет).

Гипотеза: всякий шелл-скрипт при добавлении функциональности стремится вырасти в программу на Perl’е или Python’е.

Язык до программы доведёт

Date: 2016-07-16 07:12 am (UTC)
phd_ru: (Default)
From: [personal profile] phd_ru
Shell лучше (удобнее) python в области управления файлами и процессами. Python лучше shell в области работы со структурами данных. Так что гипотеза в общем случае неверна, всё зависит от типа функциональности. Выбирай ботинок по ноге, а язык под задачу.
yurikhan: (Default)
From: [personal profile] yurikhan
Поправка: shell удобнее python’а в области управления файлами и процессами, если мы полностью контролируем все аргументы вызываемых подпроцессов.

Date: 2016-07-15 07:34 pm (UTC)
From: [identity profile] nasse.livejournal.com

Вот щас руки до бананы дойдут...


Спасибо

Date: 2016-07-16 03:38 am (UTC)
From: [identity profile] os80.livejournal.com
А зачем рисовать всякую псевдографохрень, когда можно просто 5 строчек вывести?

Date: 2016-08-04 09:48 pm (UTC)
From: [identity profile] karpion.livejournal.com
Я что-то не врубаюсь - с какими свичами можно так работать?

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

April 2026

S M T W T F S
    123 4
5 6 7 89 1011
12 13 1415161718
19202122232425
2627282930  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 14th, 2026 06:39 pm
Powered by Dreamwidth Studios