Архив Май 2010

Отображение файла без строк с комментариями.

http://ag-up.com
grep -v -E «^;|^$» /path/to/file
grep -v -E «#|^$» /path/to/file

Реклама

Туннели между FreeBSD и Linux

http://ag-up.com
bsd# nos-tun -t /dev/tun0 -s 192.168.0.1 -d 192.168.0.2 -p 4 IP2
bsd# ifconfig tun0 mtu 1500
bsd# ifconfig tun0 up

linux# modprobe ipip
linux# ip tunnel add tun0 mode ipip remote IP1 local IP2
linux# ifconfig tun0 192.168.0.2 pointopoint 192.168.0.1
linux# ifconfig tun0 up

python: bash-completion

http://ag-up.com
bash-complition офигенный пакетик при использовании которого вы сможете с помощью TAB‘а видеть/выбирать опции, которые предоставляет ПО.
В gentoo он ставится так: emerge -q gentoo-bashcomp, в других дистрибутивах ищите сами как.
А вот скрипт который выручит человека и сделает из него обезьяну(т.е. освободит от работы) и подключит bash-completion для всего ПО, которое позволяет это сделать:


#!/usr/bin/python
import os,re
os.system("eselect bashcomp list > /tmp/eselect")
line = open('/tmp/eselect','r').readlines()[-1]
regexp = re.search('[0-9].{2}',line)
for i in xrange(1,int(regexp.group(0))):
    os.system("eselect bashcomp enable --global "+str(i))
print "that's all"

PS: bash-completion является дополнялкой не только для bash-шелла, но и для zsh и др.

как сделать бэкап в dd-wrt

http://ag-up.com
Настройки подобного оборудования обычно хранятся в энергонезависимой памяти. Устройства можно найти в proc/mtd

root@router:~# cat /proc/mtd
dev:    size   erasesize  name
#загрузчик
mtd0: 00040000 00010000 "cfe"
#ядро
mtd1: 003b0000 00010000 "linux"
#корневая файловая система
mtd2: 001db400 00010000 "rootfs"
#параметры
mtd3: 00010000 00002000 "nvram"
#свободный раздел (я там храню дополнительные скрипты инициализации)
mtd4: 000f0000 00010000 "ddwrt"

Ну а дальше делаем полный дамп интересующего нас раздела, и сохраняем где-нибудь у себя на компьютере.

#делаем дамп
root@router:~# dd if=/dev/mtdblock/3 of=/tmp/config.dd
128+0 records in
128+0 records out
root@router:~#

Читать далее

где установить keep-alive в linux

http://ag-up.com

#при простое этого времени, будет произведена проверка соединения
/proc/sys/net/ipv4/tcp_keepalive_time
#с каким интервалом делать проверку соединения
/proc/sys/net/ipv4/tcp_keepalive_intvl
#сколько делать попыток перед разрывом соединения
/proc/sys/net/ipv4/tcp_keepalive_probes

Установить нужные значения можно следующими способами:
через procfs:

echo "3" > /proc/sys/net/ipv4/tcp_keepalive_probes

через sysctl:

sysctl -w net.ipv4.tcp_keepalive_probes=3

программно:

 setsockopt( sock, SOL_SOCKET, SO_KEEPALIVE, 1, sizeof(int) );
 setsockopt( sock, SOL_TCP, TCP_KEEPCNT, 20, sizeof(int) );
 setsockopt( sock, SOL_TCP, TCP_KEEPIDLE, 180, sizeof(int) );
 setsockopt( sock, SOL_TCP, TCP_KEEPINTVL, 60, sizeof(int) );

Читать далее

dir-320 vlan port configure

В интернете куча статей как связать порты dir-320 с вланами через nvram, однако если у вас собственная прошивка, то вряд ли вам это поможет. Чтение исходников показало что в конечном итоге все сходится к /proc/switch.
Для наличия этого интерфейса управления нам необходимо, чтобы модули ядра switch-robo, switch-core, switch-adm были загружены.
Смотрим что мы имеем:

# cd /proc/switch
./eth0
./eth0/version            #по всей видимости, версия драйвера
./eth0/driver             #а это, по всей видимости, его имя
./eth0/reset              #запись 1 должно приводить к сбросу установок, мне проверить это пока не удавалось
./eth0/enable             #эта опция скорее всего позволяет отключить интерфейс целеком
./eth0/enable_vlan        #запись 0 превращает устройство в тупой 5-ти портовый switch
./eth0/vlan/N/ports       #вот тут то и описывается какие порты к какому влану относятся
./eth0/port/N/flow        #хз
./eth0/port/N/prio        #приоритеты трафика
./eth0/port/N/prio-enable #включение очередей приоритетов
./eth0/port/N/bandwidth   #ширина канала
./eth0/port/N/media       #скорость подключения
./eth0/port/N/enable      #0 - отключает порт, 1 - включает

Читать далее

Скрипт для распаковки архивов


#!/bin/bash
if [ -f $1 ] ; then
 case $1 in
  *.tar.bz2) tar xvjf $1 ;;
  *.tar.gz) tar xvzf $1 ;;
  *.bz2) bunzip2 $1 ;;
  *.rar) unrar x $1 ;;
  *.gz) gunzip $1 ;;
  *.tar) tar xvf $1 ;;
  *.tbz2) tar xvjf $1 ;;
  *.tgz) tar xvzf $1 ;;
  *.zip) unzip $1 ;;
  *.Z) uncompress $1 ;;
  *.7z) 7z x $1 ;;
  *) echo "'$1' cannot be extracted via script" ;;
 esac
else
 echo "'$1' is not a valid file"
fi