понедельник, 28 апреля 2014 г.

Best short ingress shaper for linux by using htb and iptables

Здесь пример только для входящего трафика. Исходящий жмется также.
#cat /etc/init.d/shaper.sh
eth0  - local net interface


case "$1" in
start)
    echo -n "Starting shaper. . ."
    tc qdisc  add dev eth0 root handle 1: htb default 30 r2q 1
    tc class  add dev eth0 parent 1: classid 1:1 htb rate 100mbit

#самый медленный класс, с приоритетом 1 - потому как тормознуть наглый хост надо палюбасу :)
    tc class  add dev eth0 parent 1:1 classid 1:30 htb rate 4mbit ceil 10mbit  burst 200k prio 1
    tc qdisc  add dev eth0 parent 1:30 sfq perturb 10
    iptables -t mangle -A POSTROUTING -o eth0 -d 192.168.1.66 -j CLASSIFY --set-class 1:30
#туда же весь торрент трафик
    iptables -t mangle -A POSTROUTING -o eth0 -p tcp -m multiport --sport 4661,4662,4672,4665,4711,6881:6889,6881:6999 -j CLASSIFY --set-class 1:30
    iptables -t mangle -A POSTROUTING -o eth0 -p udp -m multiport --sport 4661,4662,4672,4665,4711,6881:6889,6881:6999 -j CLASSIFY --set-class 1:30

#более добрая политика для внутряки через прокси и остальное
    tc class  add dev eth0 parent 1:1 classid 1:20 htb rate 10mbit ceil 30mbit  burst 200k prio 2
    tc qdisc  add dev eth0 parent 1:20 sfq perturb 10
    iptables -t mangle -A POSTROUTING -o eth0 -p tcp -m multiport --sport 3128,80,443,25,110,495,995,465,222,2222 -j CLASSIFY --set-class 1:20

#совсем добрый класс для dns/ssh, мелких пакетов и директора))
    tc class  add dev eth0 parent 1:1 classid 1:10 htb rate 4mbit ceil 100mbit burst 200k prio 3
    tc qdisc  add dev eth0 parent 1:10 sfq perturb 10
    iptables -t mangle -A POSTROUTING -o eth0 -p tcp -m multiport --sport 53,123,22 -j CLASSIFY --set-class 1:10
    iptables -t mangle -A POSTROUTING -o eth0 -p tcp --syn -m length --length 40:68 -j CLASSIFY --set-class 1:10
    iptables -t mangle -A POSTROUTING -o eth0 -p tcp --tcp-flags ALL SYN,ACK -m length --length 40:68 -j CLASSIFY --set-class 1:10
    iptables -t mangle -A POSTROUTING -o eth0 -d 192.168.0.66 -j CLASSIFY --set-class 1:10

    echo "OK"
;;
#окончание скрипта
stop)
    echo -n "Stopping shaper. . ."
    iptables -t mangle -F
    tc qdisc del dev eth0 root
    echo "OK"
;;

status)
    if [ "$2" = "" ]; then
    $0; exit;fi
    echo "============== QDISC STATUS =================="
    tc -s -d qdisc show dev $2
    echo "============== CLASS STATUS =================="
    tc -s -d class show dev $2
    echo "----------------------------------------------"
;;

restart)
$0 stop && $0 start || exit 1
;;

*)
echo "Usage: `basename $0` {start|stop|restart|status eth0/eth1}"
exit 1
;;

esac

понедельник, 21 апреля 2014 г.

Оправляем письмо с помощью vbscript


set objEmail = CreateObject("CDO.Message")
myfolder = "D:\FOLDER1\FOLDER2"
objEmail.From = "from@email"
objEmail.To = "user123@mail.cc"
objEmail.Cc = "cc@email"
objEmail.Subject = "SUBJECT"
objEmail.Textbody = "С ув. qwer" & vbCRLF & " qweqwqweqwe"
objEmail.BodyPart.CharSet = "windows-1251"

Set objFSO = CreateObject("Scripting.FileSystemObject")

set WShell = CreateObject("WScript.Shell")
Dim str1

Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(myfolder)
Set files = folder.Files

For each folderIdx In files
 if InStr(folderIdx.Name,"USR") then
str1 = myfolder & folderIdx.Name
'WScript.Echo(str1)
  objEmail.AddAttachment (str1)
 end if
Next

objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "exch"
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update()

objEmail.Send()

среда, 29 января 2014 г.

Скрипт для сбора некоторых данных при входе(выходе) в(из) AD:
(AD logon - habrahabr)

On Error Resume Next Dim adsinfo, ThisComp, oUser Set adsinfo = CreateObject("adsysteminfo") Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName) Set oUser = GetObject("LDAP://" & adsinfo.UserName) Thiscomp.put "description", "Logged on: " + oUser.cn + " " + CStr(Now)

ThisComp.Setinfo oUser.put "description", "Logged on: " + ThisComp.cn + " " + CStr(Now) oUser.Setinfo

(AD logoff - habrahabr)


On Error Resume Next Dim adsinfo, ThisComp, oUser Set adsinfo = CreateObject("adsysteminfo") Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName) Set oUser = GetObject("LDAP://" & adsinfo.UserName) Thiscomp.put "description", ">>Logged off: " + oUser.cn + " " + CStr(Now) ThisComp.Setinfo oUser.put "description", ">>Logged off: " + ThisComp.cn + " " + CStr(Now) oUser.Setinfo


Узнаем ip по vbs:


strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set IPConfigSet = objWMIService.ExecQuery _ ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE") For Each IPConfig in IPConfigSet If Not IsNull(IPConfig.IPAddress) Then For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress) WScript.Echo IPConfig.IPAddress(i) Next End If Next

вторник, 24 сентября 2013 г.

Загрузка с iso в GRUB2

menuentry "Ubuntu Live" {
set root=(hd0,7)
loopback loop /ubuntu-11.04-desktop-amd64.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-11.04-desktop-amd64.iso noeject noprompt --
initrd (loop)/casper/initrd.lz
}


где-то так

NGINX+CGI на примере lightsquid

АТТЕНШНТ! ВОТ ЭТА СХЕМА НЕ РАБОТАЕТ! через некоторое время nginx перестает обслуживать сайт, потому что wrapper валится и пускает слюни.

location ~ ^/lightsquid/.*\.cgi$ {
       gzip off; #gzip makes scripts feel slower since they have to complete before getting gzipped
       fastcgi_pass  unix:/var/run/cgiwrap-dispatch.sock;
       fastcgi_index index.cgi;
       include "fastcgi_params";
       fastcgi_param SCRIPT_FILENAME /var/www/htdocs/olegon$fastcgi_script_name;
       expires 1m;
       }


WRAPPER (содрано с http://olegon.ru/showthread.php?t=12218) :


демонизируется  например на старте системы.


=======================================
Работающая схема:
apt-get install fcgiwrap
можно его настроить на работу через сокет, но лучше по tcp. Для этого редактируем /etc/init.d/fcgiwrap и приводим шапку к такому виду:

# FCGI_APP Variables

FCGI_CHILDREN="1"
#FCGI_SOCKET="/var/run/$NAME.socket"
FCGI_PORT="8999"
FCGI_ADDR="127.0.0.1"


location ~ (\.cgi|\.pl) {

        gzip off; #gzip makes scripts feel slower since they have to complete before getting gzipped
#        fastcgi_pass  unix:/var/run/fcgiwrap.socket;
          fastcgi_pass  127.0.0.1:8999;
          fastcgi_index index.cgi;
          include "fastcgi_params";
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_param PATH_INFO $fastcgi_script_name;
          expires 1m;
        }

location /lightsquid {

          alias /var/www/lightsquid/;
          index index.cgi;
}


Предисловие

На самом деле блог рассчитан на меня и только на меня. Эдакая памятка по темам с которыми приходится сталкиваться. Ну, может быть тут будет и техническая муть, и политические выводы, крики души и прочее непотребство от меня любимого (и скромного кста))). Как пойдет. Го, вобщем :)