Skip to main content

Posts

Showing posts from 2016

[bash-script] git log with refs of body

git log with refs of body #!/bin/bash COMMITS=${1} DELIMITER="|" RET_GITLOG=`git log --format=format:"${DELIMITER} %h ${DELIMITER} %s ${DELIMITER}" ${COMMITS}` HEADER="${DELIMITER} Hash ${DELIMITER} Subject ${DELIMITER} Refs ${DELIMITER}" function func_append_refs {   while true   do     read -r MY_LINE     if [ "${MY_LINE}" == "" ]; then       return     fi     COMMIT_HASH=`echo "${MY_LINE}" | awk -F "${DELIMITER}" ' { print $2 } '`     REFS_LOG=`git log -1 ${COMMIT_HASH} --format=format:'%b' | egrep -i "refs|fix"`     echo "${MY_LINE} ${REFS_LOG} |"   done } echo "${HEADER}" echo "${RET_GITLOG}" | func_append_refs

[bash-script] vsz, rss logger for one process

#!/bin/bash BIN_PROC_FILES="my_bin" LOG_FILE=/tmp/memlog.log RM_LOG_FILE=0 G_STDOUTPUT=1 function write_log {   CUR_TIME_STR=`date +"%Y%m%d_%H%M%S"`   if [ ${G_STDOUTPUT} -gt 0 ]; then     echo "${CUR_TIME_STR} $1"   fi   if [ "${LOG_FILE}" != "" ] ; then     echo "${CUR_TIME_STR} $1" >> ${LOG_FILE}   fi } function loop_proc {   for CUR_BIN in ${BIN_PROC_FILES}   do     PID_SNIPER=`pidof ${CUR_BIN}`     if [ "${PID_SNIPER}" != "" ]; then       MEM_STATS=`ps --pid ${PID_SNIPER} -o rss,vsz`       LINE_CNT=`echo "${MEM_STATS}" | wc -l`       if [ ${LINE_CNT} -gt 1 ]; then         MEM_STAT=`echo "${MEM_STATS}" |tail -n 1`       fi       write_log "${CUR_BIN} ${PID_SNIPER} ${MEM_STAT}"     fi   done } if [ ${RM_LOG_FILE} -gt 0 ]; then   if [ "${LOG_FILE}" != "" ] ; then     rm ${LOG_FILE}   fi fi while true do   loop

[scapy] Linux-Cooked pcap to ethernet

# The pcap file formatted by "Linux cooked" # tcpdump -r myfile.pcap -nn reading from file event1.pcap, link-type LINUX_SLL (Linux cooked) ... ... # step1. read myfile.pcap pkts = rdpcap("myfile.pcap"); # step2. read myfile.pcap pkts = [Ether(src='00:11:22:33:44:55', dst='22:33:44:55:66:77')/pkt[1:] for pkt in pkts] # step3. modify IP address and recalculate chksum for pkt in pkts:  pkt[1].dst='192.168.1.10';  pkt[1].src='192.168.1.1';  del pkt[IP].chksum  del pkt[UDP].chksum # step4. packet send sendp(pkts[0]); # step5. save pcap  wrpcap("output.pcap",pkts); # tcpdump -r output.pcap -nn reading from file output.pcap, link-type EN10MB (Ethernet) ... ... # pkt[1:] : It means IP layer 1) Before: Linux cooked / IP / UDP / UDP-Data 2) After: Ethernet / IP / UDP / UDP-Data

[bash-script] get_info.sh print cpu allocation infomation of threads

1) way1 ps xH -o 'pid tid cmd comm pcpu psr' 2) way2 #!/bin/bash TMP_FILE=$(mktemp /tmp/abc-script.XXXXXX) echo ${TMP_FILE} ps xH -o 'pid tid cmd comm pcpu ' > ${TMP_FILE} function make_header() {   echo -n "$1"   echo " psr" } function make_values() {   echo -n "$1"   STATUS_FILE=/proc/${2}/task/${3}/status   if [ -f ${STATUS_FILE} ] ; then     CPU_SET=`cat ${STATUS_FILE}  |grep Cpus_allowed_list |awk ' { print $2 } '`   else     CPU_SET="None"   fi   echo " ${CPU_SET}" } let IDX=0 while IFS='' read -r line || [[ -n "$line" ]]; do    LINE_SEP=( $line )    MY_PID=${LINE_SEP[0]}    MY_TID=${LINE_SEP[1]}    if [ ${IDX} -eq 0 ]; then      SZ_HEADER=`make_header "$line"`      echo ${SZ_HEADER}    else      SZ_VALUES=`make_values "$line" ${MY_PID} ${MY_TID}`      echo ${SZ_VALUES}    fi #   echo ${IDX}   let IDX=${IDX}+1 done < "

[AWK] C struct to fprintf script

example code #!/bin/bash awk ' { if ($1 == "u_int" ) FORMAT="%u"; \ else if ($1 == "u_short" ) FORMAT="%u"; \ else if ($1 == "uint64_t" ) FORMAT="%lu"; \ else if ($1 == "int" ) FORMAT="%d"; \ else if ($1 == "int32_t" ) FORMAT="%d"; \ else if ($1 == "int64_t" ) FORMAT="%ld"; \ else if ($1 == "u_char" ) FORMAT="%s"; \ else if ($1 == "char" ) FORMAT="%s"; \ else FORMAT="ERROR"; \ if ( substr($2,length($2),1) == ";" ) KEY=substr($2,0, length($2)-1); else KEY=$2; \ print "fprintf(stdout, \"" KEY "= [" FORMAT "]\\n\", p_x->" KEY " );" } ' a.dat # a.dat typedef struct {       u_int    m1;       int myport;       u_short  ushort2;       u_int    int1;       u_short  data;       u_char   dummy[8];       uint64_t length;

[Linux/vi] multi search string

[1stString] : First string to find. [2ndString] : Second string to find Or Search ( Use "\|" ) /[1stString]\|[2ndString] And Search (Use ".*" ) /[1stString].*[2ndString]/ Reference: http://www.linuxquestions.org/questions/linux-software-2/searching-multiple-patterns-through-vi-editor-725155/

linux file system recovery

1. broken hdd disk backup  1) remote-server nc -v -l [port] > hdd_backup.img  2) equipment of broken hdd dd if=/dev/sda | nc -v [remote-server IP] [port]   ex)  1) remote-server nc -v -l 2222 > hdd_backup.img  2) equipment of broken hdd dd if=/dev/sda | nc -v 1.1.1.1 2222 2. use recovery tool  testdisk (http://www.cgsecurity.org/wiki/TestDisk_Download) 3. run fsck from img file  # losetup --offset 32256 /dev/loop2 harddrive.img  # fsck /dev/loop2  and again testdisk reference: https://major.io/2010/12/14/mounting-a-raw-partition-file-made-with-dd-or-dd_rescue-in-linux/ https://bbs.archlinux.org/viewtopic.php?id=136766

run dosbox on windows10 tablet

My windows tablet with dosbox had erros.  "SDL: DirectInputDevice::SetDataFormat: Invalid parameters" Solution-1 download vcredist_x86.exe file and install Solution-2 download and install Touch Enabled SDL. ==>  SDL.dll  Reference:   http://www.ppomppu.co.kr/ zboard/view.php?id=wintab&no= 11258 http://zhengxu.tistory.com/276

[bash] unix time to date format

----------------------- function print_date_by_unix_time {   LOCALE="+9hour"   date -d "1970-01-01 $1 seconds ${LOCALE}" } ----------------------- Output Example # print_date_by_unix_time `date +%s` Fri Jan 29 20:40:23 KST 2016 # print_date_by_unix_time 1354067587 Wed Nov 28 10:53:07 KST 2012

[python] get string from output of other process

1.  The Script ---------------------------------- #!/usr/bin/python import subprocess def getCallResult(cmdARGS):   fd_popen = subprocess.Popen(cmdARGS.split(), stdout=subprocess.PIPE).stdout   data = fd_popen.read().strip()   fd_popen.close()   return data data = getCallResult("ls -la") print (data) ---------------------------------- 2. Result Example ---------------------------------- # python test.py total 524 drwxrwxr-x  4 parkmo parkmo   4096  1월 27 16:30 . drwxrwxr-x 45 parkmo parkmo   4096  1월 27 11:59 .. drw-rw-r--  1 parkmo parkmo    421  1월 27 12:01 test.py .. .. 1) If you don't want use split() when call subprocess.Popen, use [ ]. subprocess.Popen(["ls", "-la"], stdout=subprocess.PIPE).stdout 2) If you can want to file descriptor.   fd_popen = subprocess.Popen(cmdARGS.split(), stdout=subprocess.PIPE).wait() You can use Blocking or Non-Blocking. Test Environment: Pytho

[awk] convert K, M, G to byte in string

p1 file 1.2G /home/parkmo 0.5M /home/parkmo/tmp ------------------------------------------ Output 1288490188 /home/parkmo 524288 /home/parkmo/tmp ------------------------------------------ ---- the script ----- cat p1 | awk '{ TEXT1=$1; TEXT2=$2;  SEP=substr(TEXT1, length(TEXT1), length(TEXT1));  STR_VALUE=substr(TEXT1, 0, length(TEXT1-1)); # print SEP; # print STR_VALUE;  if ( SEP == "K" )  { VALUE=STR_VALUE*1024 }  else if ( SEP == "G")  { VALUE=STR_VALUE*1024*1024*1024 }  else if ( SEP == "M")  { VALUE=STR_VALUE*1024*1024 }  else { VALUE=STR_VALUE } printf("%d %s\n", VALUE, TEXT2) } '