script

Стянуть сайт wget'ом

wget --mirror --convert-links --no-parent --page-requisites --restrict-file-names=windows www.site.ru

No available ip addresses in pool.

Всё началось с UTM5 + freeradius (2 dynamic ip pool) + urfaclient на php + pppoe-server (linux) - See more at:
http://www.linuxsnippets.net/ru/node/227

Прошло пару лет и вот я наткнулся на один баг.
У меня пользователи pppoe начали получать виртуальные ip-адреса из подсетей 10.67.15.0/24 и 10.67.16.0/24.
При чем начали получать не все, а только некоторые и в основном с одного только NAS-а.
Это служебные пулы pppoe-сервера по умолчанию. Если радиус не назначил пользователю ip-адрес то ему по умолчанию назначает pppoe-server.

Интерактивный режим PFTP

pftp -i $HOST <<+
cd /Volume_1/
send /backups/$FILE /Volume_1/backups/$HOST/$FILE
delete /Volume_1/backups/$HOST/$OLD_FILE
+

List installed deb packages by size

dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n

poweroff if idle

while : ; do if [[ `vmstat 60 2 | tail -n 1 | awk '{print $15}'` > 90 ]]; then poweroff; fi ; done

Fast create seft-signed certificate with openssl

openssl req -new -x509 -days 365 -nodes -out SSL_CERT.crt -keyout SSL_KEY.key

       The req command primarily creates and processes certificate requests in PKCS#10 format. It can additionally create self signed
       certificates for use as root CAs for example.
 
       -new
           this option generates a new certificate request. It will prompt the user for the relevant field values. The actual fields
           prompted for and their maximum and minimum sizes are specified in the configuration file and any requested extensions.
 
       -x509

multithreaded parallel rsync

find -type d | xargs -I '{}' -P 10 -n1 rsync -a --no-r remote:path/'{}'/ '{}'/

rsync args:
--no-r No recursive

xargs args:
-P 10 Run up to 10 processes at a time.
-n 1 Use 1 argument per command line.

скрипт shapelog_formation для шейпера UTM5

#!/bin/bash
 
# 10 - входящий канал
# 20 - исходящий канал
# 0 - Удаление записей о ширине канала
# 1 - Установка ширины канала
# 2 - Изменение ширины канала
 
 
#ID=$[$1+3000]
ID=$1
UIP=$2
UBITS=$3
UMASK=$4
BANDWIDTH=$5
STATE=$6
SPD_IN_LOG=/netup/utm5/log/dynashape_in.log
SPD_OUT_LOG=/netup/utm5/log/dynashape_out.log
LOG_TMP=/netup/utm5/log/dynashape.tmp
 
 
echo "ID=$ID UIP=$2 UBITS=$3 UMASK=$4 BANDWIDTH=$5 STATE=$6";
 
case "$7" in
 
10)
 
  case "$6" in
  0)
    sed "/^$ID[[:space:]]/d" $SPD_IN_LOG > $LOG_TMP
    cp $LOG_TMP  $SPD_IN_LOG
  ;;
 
  1)

скрипт определяющий какие AS-ки входят в as-set

#!/bin/bash
 
tmpfile=/tmp/as-set.tmp
asfile=/tmp/as-set
asset=$1
 
if [ "$asset" != "" ];then
 
  if [ -e $asfile ];then
    rm $asfile
  fi
  touch $asfile
  touch $tmpfile
 
  ar()
  {
    arr=(` whois $asset | grep members | awk '{print $2}'`)
    if [ "$arr" != "" ];then
      for i in "${arr[@]}"
        do
          if [ "`echo $i | grep AS-`" = "" ];then
            echo "$i" >> $tmpfile
          else
            asset=$i
            ar
          fi
        done
    else
      echo "AS-SET not exist"
    fi
  }
  ar
 
  while read LINE
  do