Skip to main content

Posts

[linux/bash script] time command result sum

calc_alltime.sh #!/bin/bash TIME_RESULT_FILE=${1} if [ "${TIME_RESULT_FILE}" != "" ]; then   if [ -f ${TIME_RESULT_FILE} ]; then   egrep "^[rus]" ${TIME_RESULT_FILE} |awk ' { print $2 } '| sed -e 's/m/ /'g |sed -e 's/s$//g' |  awk ' { SUM_MIN=SUM_MIN+$1; SUM_SEC=SUM_SEC+$2; } END {  NEW_MIN=int(SUM_SEC/60);  SUM_MIN=SUM_MIN+NEW_MIN;  SUM_SEC=SUM_SEC-(NEW_MIN*60);  print SUM_MIN "m" SUM_SEC "s" } '   else     echo "File not exist"   fi fi example of FILE # cat tt 1th try real    0m2.564s user    0m0.032s sys     0m0.033s 2th try real    0m2.586s user    0m0.039s sys     0m0.034s 3th try real    0m2.810s user    0m0.036s sys     0m0.042s 4th try real    0m3.155s user    0m0.042s sys     0m0.040s # calc_alltime.sh tt 0m11.413s

[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;