1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Shell to perl

Discussion in 'Perl' started by citiwang, May 18, 2011.

  1. citiwang

    citiwang New Member

    Joined:
    May 18, 2011
    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    0
    I have done a script, but it is based on shell script, and i want to convert it to perl. I am very new to perl.
    #!/bin/bash
    #set -x
    fileday=$1
    result_file=Total`date +%Y%m%d%H%M`
    out_folder=/home/cmd/pm_analyze
    tmp_folder=/tmp/pmtmp
    datatype='split licenceCounter cdrsReceivedTotSum cdrsCombinedSum cdrsAggregatedSum'
    ch_server() {
    ###### Choosing which server #################
    echo "Please Choose Host IP ?"
    echo " 1) CGX02 172.17.11.23"
    echo " 2) CGX03 172.17.11.24"
    echo " 3) CGW03 172.17.12.23"
    echo " 4) CGW04 172.17.12.24"
    echo " 5) CGT01 172.17.9.51"
    read server
    if [ "$server" = "1" ]
    then
    hostip="172.17.11.23"
    elif [ "$server" = "2" ]
    then
    hostip="172.17.11.24"
    elif [ "$server" = "3" ]
    then
    hostip="172.17.12.23"
    elif [ "$server" = "4" ]
    then
    hostip="172.17.12.24"
    else
    hostip="172.17.9.51"
    fi
    }
    proc_pm() {
    for i in $datatype
    do
    total=0
    number=0
    filename=$tmp_folder/$i.log
    echo "Now processing $filename"
    while read line
    do
    number=` echo $line | cut -d '>' -f2 | cut -d '<' -f1 `
    let total+=number
    done < $filename
    echo " the $i total sum = $total" >> $out_folder/$result_file
    done
    }
    #### Check Output folder exit or not #################
    if [ ! -d $out_folder ]
    then
    echo "#######output folder not exit !! Creating #####"
    mkdir -p $out_folder
    if [ ! -d $out_folder ]
    then
    echo "Creating Fail !! Pleae check"
    exit
    else
    echo "Create Success"
    fi
    fi
    if [ ! -d $tmp_folder ]
    then
    echo "#######TMP folder not exit !! Creating #####"
    mkdir -p $tmp_folder
    if [ ! -d $tmp_folder ]
    then
    echo "Creating Fail !! Pleae check"
    exit
    ele
    echo "Create Success"
    fi
    fi
    ##################Checking tmp folder data ##################
    echo "************************ Warring **************************"
    echo "*** All the files under temp folder will be deleted. ******"
    echo "*** Temp folder is $tmp_folder ******"
    echo "***********************************************************"
    read -p "Are you sure continue processing (yes/no):" answer
    #read answer
    if [ "$answer" == "n" ] || [ "$answer" == "no" ]
    then
    exit 0;
    else
    tmpfiles=`ls -al $tmp_folder/*.log | wc -l`
    if [ "$tmpfiles" == "0" ]
    then
    echo "***************************************************************"
    echo " ********* OK, There are no any logs under $tmp_folder ********"
    echo "***************************************************************"
    else
    rm $tmp_folder/*
    tmpfiles1=`ls -al $tmp_folder/*.log | wc -l`
    echo $tmpfiles1
    if [ "tmpfiles1" == "0" ]
    then
    echo " ********* OK, All files are deleted ********"
    else
    echo " ********* There are some logs cannot deleted. Please check it. ********"
    exit 0
    fi
    fi

    fi
    ##### choosing which file type #################
    echo "Please Choose Solution ?"
    echo " 1) Please Input An filename ?"
    echo " 2) Summation Daily Total Counts"
    read ftype

    if [ "$ftype" == "1" ]
    then
    echo "Please input filename and file path"
    read filepath
    if [ ! -e "$filepath" ]
    then
    echo "************************************"
    echo "*****Shit!! File does not exist****"
    echo "************************************"
    exit
    fi
    for i in $datatype
    do
    gzcat $filepath |grep $i >> $tmp_folder/$i.log
    done
    proc_pm;
    elif [ $ftype == "2" ]
    then
    echo " Please input date for processing "
    read filedate
    ch_server;
    echo "Please input path "
    read datepath
    datefile=`ls -al $datepath/PM.$hostip.$filedate.*.xml.gz | wc -l`
    if [ "$datefile" == "0" ]
    then
    echo "Sorry !! There are no PM files under $datepath"
    exit 1
    fi
    for i in $datatype
    do
    gzcat $datepath/PM.$hostip.$filedate.*.xml.gz |grep $i >> $tmp_folder/$i.log
    done
    proc_pm;
    else
    echo "Sorry!! You don't give me the right command"
    fi
     

Share This Page