середа, 27 січня 2010 р.

Ethernet <->Wi-Fi failover

Простой случай: у вас есть одна сеть, доступная и по витой паре, и по wi-fi (очень распостраненная ситуация дома, а иногда и на некоторых фирмах). Хочется в случае подключения к витой паре работать через неё (чтобы быстрее), в случае отключения работать через wi-fi (для мобильности). Делается элементарно:
rc.conf:
#выставить на ethernet интерфейсе MAC с wifi интерфейса
# поднять оба интерфейса и запустить wpa_supplicant на wifi линке
ifconfig_em0="ether 00:16:ed:5d:6a:38 up"
wlans_iwn0="wlan0"
ifconfig_wlan0="WPA up"
# объединить линки
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto failover laggport em0 laggport wlan0 DHCP"

Сложный случай: есть разные сети, и только в некоторых из них wifi и ethernet это одна сеть, а в остальных разные. Тогда добавляем wlan0 в lagg только для сетей, которые мы явно указали.
rc.conf:
ifconfig_em0="ether 00:16:ed:5d:6a:38 up"
wlans_iwn0="wlan0"
ifconfig_wlan0="WPA DHCP"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto failover laggport em0 wlan0 DHCP"
Находим и правим секцию в devd.conf:
notify 0 {
        match "system"          "IFNET";
        match "type"            "LINK_UP";
        media-type              "802.11";
        action "/etc/wlan_up.sh $subsystem";
};
Содержимое wlan_up.sh:
#!/bin/sh

subsystem=$1

laggether="`ifconfig lagg0 |awk '/ether/ {print \$2}'`"
wlanether="`ifconfig ${subsystem} |awk '/ether/ {print \$2}'`"
ssid="`ifconfig ${subsystem} |awk '/ssid/ {print \$2}'`"

if [ "x${laggether}" = "x${wlanether}" ]
then
        if [ "x${ssid}" = "xasus" ]
        then
                ifconfig lagg0 laggport ${subsystem}
                exit
        fi
fi

/etc/rc.d/dhclient quietstart $subsystem
В моём случае wlan добавляется в lagg только для ssid asus и только в случае, если MAC адрес wlan интерфейса и lagg интерфейса совпадает (это сделано для того, чтобы не добавлять в lagg другие wlan интерфейсы - я еще иногда подключал usb wlan карточку)

субота, 16 січня 2010 р.

Регулировка яркости в sony vaio

Работает! Оказывается надо всего лишь порыться в портах и нарисовать скриптик для того, чтобы в зависимости от текущей видеокарточки использовались разные программы:
#!/bin/sh

usage()
{
        echo "usage: $0 [value|+value|-value]" >&2
        exit 2
}

if [ $# -gt 1 ]
then
        usage
fi

ETC=/usr/local/etc/X11
if ( cmp -s ${ETC}/xorg.conf ${ETC}/xorg.conf.sony.intel )
then
        getcmd='xbacklight'
        setcmd='xbacklight -set '
        inccmd='xbacklight -inc '
        deccmd='xbacklight -dec '
else
        if [ $(id -u) -ne 0 ]
        then
                prefix='sudo '
        else
                prefix=''
        fi
        getcmd="${prefix}nvclock -i | awk '/Backlight/ {print \$3;}'"
        setcmd="${prefix}nvclock -S "
        inccmd="${prefix}nvclock -S +"
        deccmd="${prefix}nvclock -S -"
fi

if [ $# -eq 0 ]
then
        $getcmd
        exit
fi

case $1 in
[0-9]|[0-9][0-9]|100)
        ${setcmd}$1 
        ;;
+[0-9]|+[0-9][0-9])
        ${inccmd}${1#?}
        ;;
-[0-9]|-[0-9][0-9])
        ${deccmd}${1#?}
        ;;
*)
        usage
        ;;
esac
Теперь на минимальной яркости с выгруженным usb живет 4 часа.

неділя, 10 січня 2010 р.

Страна должна знать своих "героев"

Заказал в пятницу по инету в интернет-магазине "алло" мобилку. Часа в 4 дня перезвонили, сказали что есть, могут в субботу доставить или я могу сам забрать. Сказали что сам могу забрать в пятницу до 7 вечера. Сказал что заберу сам. Они еще раз обратили внимание что нужно успеть до 7 вечера. Сказал что успею. Приехал к ним полседьмого и поцеловал закрытую дверь. Практически одновременно со мной приехал еще один человек (ему вообще сказали что до полвосьмого можно забрать). На телефоны при этом они не отвечали. Сегодня они сами перезвонили (уже другой человек), мол я ж там заказ оставлял. Обрадовал их что от них мне больше заказов не надо.
Итого 3 часа потерянного на катание к ним и назад времени ...