yehaku 发表于 2018-3-25 19:04:27

HS8145V 8546V restorehwmode.sh 恢复华为界面脚本解析

HS8145V 8546V restorehwmode.sh 恢复华为界面脚本解析
根据脚本可以逆转还原成以前的界面和改成其他运营商的界面

#! /bin/sh

#set hw parameters
#copy etc/wap/hw_default_ctree.xml to /mnt/jffs2/hw_ctree.xml
#set the spec para

var_default_ctree=/mnt/jffs2/hw_default_ctree.xml;
var_ctree=/mnt/jffs2/hw_ctree.xml
var_customize=/mnt/jffs2/customizepara.txt
var_bms_prevxml_temp="/mnt/jffs2/hw_bms_prev.xml"
var_bms_oldcrc_temp="/mnt/jffs2/oldcrc"
var_bms_oltoldcrc_temp="/mnt/jffs2/oltoldcrc"
var_bms_prevcrc_temp="/mnt/jffs2/prevcrc"
var_bms_oltprevcrc_temp="/mnt/jffs2/oltprevcrc"
var_bms_oskvoice_temp="/mnt/jffs2/hw_osk_voip_prev.xml"
var_rebootsave="/mnt/jffs2/cwmp_rebootsave"
var_recovername_temp="/mnt/jffs2/recovername"
var_usr_device_temp="/mnt/jffs2/usr_device.bin"
var_ftcrc_temp="/mnt/jffs2/FTCRC"
var_ftvoip_temp="/mnt/jffs2/ftvoipcfgstate"
var_dhcp_temp="/mnt/jffs2/dhcpc"
var_dhcp6_temp="/mnt/jffs2/dhcp6c"
var_DHCPlasterrwan1_temp="/mnt/jffs2/DHCPlasterrwan1"
var_DHCPlasterrwan2_temp="/mnt/jffs2/DHCPlasterrwan2"
var_DHCPlasterrwan3_temp="/mnt/jffs2/DHCPlasterrwan3"
var_DHCPlasterrwan4_temp="/mnt/jffs2/DHCPlasterrwan4"
var_DHCPstatewan1_temp="/mnt/jffs2/DHCPstatewan1"
var_DHCPstatewan2_temp="/mnt/jffs2/DHCPstatewan2"
var_DHCPstatewan3_temp="/mnt/jffs2/DHCPstatewan3"
var_DHCPstatewan4_temp="/mnt/jffs2/DHCPstatewan4"
var_DHCPoutputwan1_temp="/mnt/jffs2/DHCPoutputwan1"
var_boardinfo_file="/mnt/jffs2/hw_boardinfo"
var_boardinfo_bakfile="/mnt/jffs2/hw_boardinfo.bak"
var_boardinfo_temp="/mnt/jffs2/hw_boardinfo.temp"
var_jffs2_customize_txt_file="/mnt/jffs2/customize.txt"
var_jffs2_choose_xml_dir="/mnt/jffs2/choose_xml"
var_jffs2_choose_xml_tar="/mnt/jffs2/choose_xml.tar.gz"
var_jffs2_spec_file="/mnt/jffs2/hw_hardinfo_spec"
var_jffs2_spec_bak_file="/mnt/jffs2/hw_hardinfo_spec.bak"
var_jffs2_feature_file="/mnt/jffs2/hw_hardinfo_feature"
var_jffs2_feature_bak_file="/mnt/jffs2/hw_hardinfo_feature.bak"
var_jffs2_hardinfo_para_file="/mnt/jffs2/hw_equip_hardinfo"
var_ontfirstonline_temp="/mnt/jffs2/ontfirstonlinefile"
var_dublecore="/mnt/jffs2/doublecore"
var_customize_telmex=/mnt/jffs2/TelmexCusomizePara
var_customize_dir="/mnt/jffs2/customize"
var_smartshowbssguide="/mnt/jffs2/smartshowbssguide"
var_smartshowuserguide="/mnt/jffs2/smartshowuserguide"
var_old_ctree="/mnt/jffs2/hw_old_ctree.xml"
var_ctree_bak="/mnt/jffs2/hw_ctree_bak.xml"
var_cfgbackup="/mnt/jffs2/CfgFile_Backup"
var_PrimaryDir="/mnt/jffs2/PrimaryDir"
var_p2p_dhcp_file="/mnt/jffs2/p2pdhcpboot_prev.ini"
var_jffs2_hardversion_bak_file="/mnt/jffs2/hw_boardinfo.bak"
var_jffs2_specsn_file="/mnt/jffs2/customize_specsn"

var_plat_root="/mnt/jffs2/platroot.crt"
var_plat_pub="/mnt/jffs2/platpub.crt"
var_plat_prvt="/mnt/jffs2/platprvt.key"

# remove plugin files
HW_Script_RemovePluginFile()
{
        #通过特性开关来决定删除哪些插件
        var_feature_enble=`GetFeature HW_FT_OSGI_JVM_FROM_VAR`
        if [ $var_feature_enble = 1 ];then
                rm-rf /mnt/jffs2/app/osgi/felix-cache;
      rm-f /mnt/jffs2/app/osgi/prebundlestatus.info;
      rm-f /mnt/jffs2/app/osgi/dlna.jar;
      rm-f /mnt/jffs2/app/osgi/samba.jar;
        else
                rm-rf /mnt/jffs2/app/osgi/* ;
        fi
        rm -rf/mnt/jffs2/app/cplugin/* /var/cplugin/*;
}

# remove files
HW_Script_RemoveFile()
{
        rm -f $var_default_ctree
        rm -f $var_ctree
        rm -f $var_customize
        rm -f $var_bms_prevxml_temp
        rm -f $var_bms_oldcrc_temp
        rm -f $var_bms_oltoldcrc_temp
        rm -f $var_bms_prevcrc_temp
        rm -f $var_bms_oltprevcrc_temp
        rm -f $var_bms_oskvoice_temp
        rm -f $var_rebootsave
        rm -f $var_recovername_temp
        rm -f $var_usr_device_temp
        rm -rf $var_ftcrc_temp
        rm -rf $var_ftvoip_temp
        rm -rf $var_dhcp_temp
        rm -rf $var_dhcp6_temp
        rm -rf $var_DHCPlasterrwan1_temp
        rm -rf $var_DHCPlasterrwan2_temp
        rm -rf $var_DHCPlasterrwan3_temp
        rm -rf $var_DHCPlasterrwan4_temp
        rm -rf $var_DHCPstatewan1_temp
        rm -rf $var_DHCPstatewan2_temp
        rm -rf $var_DHCPstatewan3_temp
        rm -rf $var_DHCPstatewan4_temp
        rm -rf $var_DHCPoutputwan1_temp
        rm -rf $var_jffs2_customize_txt_file
        rm -rf $var_jffs2_choose_xml_dir
        rm -f $var_jffs2_choose_xml_tar
        rm -fr $var_jffs2_spec_file
        rm -fr $var_jffs2_spec_bak_file
        rm -fr $var_jffs2_feature_file
        rm -fr $var_jffs2_feature_bak_file
        rm -fr $var_jffs2_hardinfo_para_file
        rm -fr $var_ontfirstonline_temp
        rm -f $var_dublecore
        rm -f /mnt/jffs2/simcard_flowflag
        rm -f /mnt/jffs2/simcardreadflag
        rm -f /mnt/jffs2/typeword
        rm -f $var_customize_telmex
        rm -rf $var_customize_dir
        rm -f $var_smartshowbssguide
        rm -rf $var_smartshowuserguide
        rm -fr $var_old_ctree
        rm -fr $var_ctree_bak
        rm -fr $var_cfgbackup
        rm -f $var_jffs2_hardversion_bak_file
        rm -rf $var_PrimaryDir
        rm -rf /mnt/jffs2/p2ploadcfgdone
        rm -rf /mnt/jffs2/dhcp6c
    rm -rf /mnt/jffs2/dhcpc
        rm -rf /mnt/jffs2/onlinecounter
        rm -rf $var_jffs2_specsn_file
        rm -rf /mnt/jffs2/reboot_bind_tag
        rm -rf $var_p2p_dhcp_file
               
        rm-rf /mnt/jffs2/app/osgi/*
        rm-rf /mnt/jffs2/app/cplugin/*
       
        rm -f /mnt/jffs2/smooth_finsh
       
        rm -f $var_plat_root
        rm -f $var_plat_pub
        rm -f $var_plat_prvt

        HW_Script_RemovePluginFile
        return
}

#creat files
HW_Script_CreateFile()
{
        var_telnet_flag=/mnt/jffs2/ProductLineMode

        echo "" > $var_telnet_flag
        if [ 0 -ne $? ]
        then
        {
                echo "ERROR::Failed to create telnet flag!"
        return 1
        }
        fi

        return 0
}

# copy files
HW_Script_CopyFile()
{
        var_etc_def=/etc/wap/hw_default_ctree.xml
       
        #增加延时,确保DB不保存
        echo > /var/notsavedata
        sleep 1

        cp -f $var_etc_def $var_ctree
        if [ 0 -ne $? ]
        then
                rm -rf /var/notsavedata
                echo "ERROR::Failed to cp hw_default_ctree.xml to hw_ctree.xml!"
                return 1
        fi

        return
}

# set spec data
HW_Script_SetData()
{
        cat $var_boardinfo_file | while read -r line;
        do
                obj_id_temp=`echo $line | sed 's/\(.*\)obj.value\(.*\)/\1/g'`
                obj_id=`echo $obj_id_temp | sed 's/\(.*\)"\(.*\)"\(.*\)/\2/g'`

                if [ "0x00000003" == $obj_id ];then
                        echo "obj.id = \"0x00000003\" ; obj.value = \"\";"
                elif [ "0x00000004" == $obj_id ];then
                        echo "obj.id = \"0x00000004\" ; obj.value = \"\";"
                elif [ "0x00000005" == $obj_id ];then
                        echo "obj.id = \"0x00000005\" ; obj.value = \"\";"
                elif [ "0x00000006" == $obj_id ];then
                        echo "obj.id = \"0x00000006\" ; obj.value = \"\";"
                elif [ "0x00000016" == $obj_id ];then
                        echo "obj.id = \"0x00000016\" ; obj.value = \"\";"
                elif [ "0x0000001a" == $obj_id ];then
                        echo "obj.id = \"0x0000001a\" ; obj.value = \"COMMON\";"
                elif [ "0x0000001b" == $obj_id ];then
                        echo "obj.id = \"0x0000001b\" ; obj.value = \"COMMON\";"
                elif [ "0x00000019" == $obj_id ];then
                        echo "obj.id = \"0x00000019\" ; obj.value = \"\";"
                elif [ "0x00000020" == $obj_id ];then
                        echo "obj.id = \"0x00000020\" ; obj.value = \"\";"
                elif [ "0x00000031" == $obj_id ];then
                        echo "obj.id = \"0x00000031\" ; obj.value = \"NOCHOOSE\";"
                elif [ "0x00000035" == $obj_id ];then
                        echo "obj.id = \"0x00000035\" ; obj.value = \"\";"
                elif [ "0x0000003a" == $obj_id ];then
                        echo "obj.id = \"0x0000003a\" ; obj.value = \"\";"
                else
                        echo -E $line
                fi
        done> $var_boardinfo_temp

        mv -f $var_boardinfo_temp $var_boardinfo_file

        return
}

# 刷新boardinfo文件的crc行
HW_Customize_ValidateBoardinfoCRC()
{
        if [ -z $1 ]; then
                return 0
        fi
        if [ -x /bin/factparam ]; then
                /bin/factparam -v $1
                if [ 0 -ne $? ]; then
                        echo "ERROR::Failed to validate boardinfo crc on $1!"
                        return 1
                fi
        fi
}

# 清除出厂参数备份
HW_Customize_ClearFactoryParamsBackup()
{
        if [ -x /bin/factparam ]; then
                /bin/factparam -e reserved
                if [ 0 -ne $? ]; then
                        echo "ERROR::Failed to clear factory parameter backup area!"
                        return 1
                fi
        fi
}

if [ 0 -ne $# ]; then
        echo "ERROR::input para is not right!";
        exit 1;
else
HW_Script_CreateFile
[ ! $? == 0 ] && exit 1

HW_Script_RemoveFile
[ ! $? == 0 ] && exit 1

HW_Script_CopyFile
[ ! $? == 0 ] && exit 1

HW_Script_SetData
[ ! $? == 0 ] && exit 1

rm -rf $var_boardinfo_bakfile

ctrg_support=`GetFeature HW_SSMP_FEATURE_CTRG`
if [ $ctrg_support = 1 ] ;then
        dbus-send --system --print-reply --dest=com.ctc.saf1 /com/ctc/saf1 com.ctc.saf1.framework.Restore > /dev/null
fi

# 必须刷新boardinfo文件的crc行,并且清除reserved分区的出厂参数备份
HW_Customize_ValidateBoardinfoCRC $var_boardinfo_file
[ ! $? == 0 ] && exit 1
HW_Customize_ClearFactoryParamsBackup
[ ! $? == 0 ] && exit 1

echo "success!"

exit 0
fi


--------------------------------------------------
最后附上脚本下载

yehaku 发表于 2018-3-26 11:19:36

qq519948746 发表于 2018-3-26 01:41
请教下你们用什么修改.sh执行脚本。
我用Notepad++修改 后无法执行都是添加的简单的命令 rm,tar,cp之 ...

su
shell
把权限获取了先

风云009 发表于 2018-3-26 00:15:45

期待高手做出三网自动转换的脚本!

yehaku 发表于 2018-3-25 21:04:16

这个是选择三网配置的脚本。一般用来选择电信 移动 连通 界面
-----------------------------
#! /bin/sh

# 输入参数变量
var_bin_ft_word=$(echo $1 | tr a-z A-Z)
var_cfg_ft_word_init=$(echo $2 | tr a-z A-Z)
var_cfg_ft_word_en=$(echo $2 | tr a-z A-Z)
var_ssid=$3
var_wpa=$4
var_input_para=$*
var_is_HGU=1
var_is_ENBG=0
var_para_num=$#
var_customize_telmex=/mnt/jffs2/TelmexCusomizePara
var_jffs2_specsn_file="/mnt/jffs2/customize_specsn"

# 全局的文件变量
var_jffs2_boardinfo_file="/mnt/jffs2/hw_boardinfo"
var_boardinfo_bakfile="/mnt/jffs2/hw_boardinfo.bak"
var_jffs2_customize_txt_file="/mnt/jffs2/customize.txt"
var_telnet_flag="/mnt/jffs2/ProductLineMode"
var_hw_hardinfo_feature="/mnt/jffs2/hw_hardinfo_feature"
var_hw_hardinfo_feature_back="/mnt/jffs2/hw_hardinfo_feature.bak"

# 其它变量
var_pack_temp_dir=/bin/
rm -rf /var/notsaveboardinfo

#新增企业网防串货特性,会在配置特征字后添加_ENBG
var_cfg_ft_word_en=`echo $var_cfg_ft_word_init | sed 's/_ENBG$//g'`
if [ $var_cfg_ft_word_init != $var_cfg_ft_word_en ];then
        var_is_ENBG=1
fi

var_upcase_cfg_ft_word=$(echo $var_cfg_ft_word_en | tr '' '')
var_BUCPEkeycfg=$(expr match "$var_upcase_cfg_ft_word" '.*\(BUCPE\).*')

#判断配置特征字是否包含:字符,var_cfg_ft_word 和 var_cfgfileword JSCT:8X2X定制 var_cfg_ft_word=JSCT,cfgfileword=8X2X
#将回显输入到空设备文件
echo $var_cfg_ft_word_en | grep : > /dev/null
if [ $? == 0 ]
then
        var_cfg_ft_word=`echo $var_cfg_ft_word_en | tr a-z A-Z | cut -d : -f1 `
        var_typeword=`echo $var_cfg_ft_word_en | tr a-z A-Z | cut -d : -f2 `
        var_bucpe=`echo $var_cfg_ft_word_en | tr a-z A-Z | cut -d : -f3 `
else
        var_cfg_ft_word=`echo $var_cfg_ft_word_en | tr a-z A-Z`
        var_typeword=""
fi

if [ "$var_typeword" = "BUCPE" ] || [ "$var_cfg_ft_word_en" = "CHOOSE_BUCPE" ] ; then
        if [ -f $var_hw_hardinfo_feature ]
        then
                echo 'feature.name="HW_SSMP_FEATURE_GXBMONITOR" feature.enable="1" feature.attribute="0"' >> $var_hw_hardinfo_feature
        else
                echo 'feature.name="HW_SSMP_FEATURE_GXBMONITOR" feature.enable="1" feature.attribute="0"' > $var_hw_hardinfo_feature
        fi
       
        cp -rf $var_hw_hardinfo_feature $var_hw_hardinfo_feature_back
        var_typeword=""
fi

if [ "$var_bucpe" = "BUCPE" ] || [ "$var_BUCPEkeycfg" = "BUCPE" ]; then
        if [ -f $var_hw_hardinfo_feature ]
        then
                echo 'feature.name="HW_SSMP_FEATURE_GXBMONITOR" feature.enable="1" feature.attribute="0"' >> $var_hw_hardinfo_feature
        else
                echo 'feature.name="HW_SSMP_FEATURE_GXBMONITOR" feature.enable="1" feature.attribute="0"' > $var_hw_hardinfo_feature
        fi
       
        cp -rf $var_hw_hardinfo_feature $var_hw_hardinfo_feature_back
fi

var_cfg_ft_word_save=`echo $var_cfg_ft_word_init | tr a-z A-Z`
var_cfg_ft_word1=$var_cfg_ft_word

var_cfg_ft_word_choose=$(echo $(echo $var_cfg_ft_word | cut -b -7) | tr a-z A-Z)

HW_Check_Boardinfo()
{
        if [ -f $var_jffs2_boardinfo_file ]; then
                return 0;
        else
                echo "ERROR::$var_jffs2_boardinfo_file is not exist!"
                return 1;
        fi
}

# 通过cfgtool设置程序特征字和配置特征字,这个操作在装备资源校验完成后执行
HW_Set_Feature_Word()
{
        #程序特征字的ID为0x0000001a,配置特征字的ID为0x0000001b,
        #这个是跟DM的代码保持一致的,产品平台存在强耦合,不能随意更改

        #判断配置特征字是否以WIFI结尾,如果是则删除
        var_cfg_ft_word_temp=`echo "$var_cfg_ft_word" | sed 's/WIFI$//g'`
        if [ "$var_bin_ft_word" = "CMCC" ] && [ "$var_cfg_ft_word_temp" != "CMCC_RMS2" ] ; then
                var_cfg_ft_word_cmcc="$var_cfg_ft_word_temp"
                var_cfg_ft_word_temp=`echo "$var_cfg_ft_word_cmcc" | sed 's/2$//g'`
               
        fi

        #如果是免预配置,电信定制为E8C E8C,联通定制为COMMON UNICOM
        if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ] ; then
                if [ "$var_bin_ft_word" = "E8C" ] ; then
                        var_cfg_ft_word_temp="E8C"
                fi

                if [ "$var_bin_ft_word" = "CMCC" ];then
                        var_cfg_ft_word_temp="CMCC"
                fi
               
                if [ "$var_bin_ft_word" = "CMCC_RMS" ];then
                        var_cfg_ft_word_temp="CMCC_RMS"
                fi
               
                if [ "$var_bin_ft_word" = "BZTLF2" ];then
                        var_cfg_ft_word_temp="BZTLF2"
                fi

                if [ "$var_cfg_ft_word" = "CHOOSE_UNICOMBRI" ];then
                        var_cfg_ft_word_temp="UNICOMBRI"
                fi
        fi
       
        if [ "$var_cfg_ft_word_temp" = "CMCC_RMS2" ] ; then
                var_cfg_ft_word_temp="CMCC_RMS"
        fi

        #检查boardinfo是否存在
        HW_Check_Boardinfo
        if [ ! $? == 0 ]
        then
                echo "ERROR::Failed to Check Boardinfo!"
                return 1
        fi

        echo $var_jffs2_boardinfo_file | xargs sed 's/obj.id = \"0x0000001a\" ; obj.value = \"*\"/obj.id = \"0x0000001a\" ; obj.value = \"'$var_bin_ft_word'\"/g' -i

        echo $var_jffs2_boardinfo_file | xargs sed 's/obj.id = \"0x0000001b\" ; obj.value = \"*\"/obj.id = \"0x0000001b\" ; obj.value = \"'$var_cfg_ft_word_temp'\"/g' -i

        #根据配置特征字后是否带_ENBG判断其是否为企业网ONT,企业网为@EN#Common&,其它运营商为@CN#Common&
        if [ 1 == $var_is_ENBG ];then
                echo $var_jffs2_boardinfo_file | xargs sed 's/^obj.id = \"0x0000003a\".*$/obj.id = \"0x0000003a\" ; obj.value = \"\@EN\#Common\&\"/g' -i
        else
                echo $var_jffs2_boardinfo_file | xargs sed 's/^obj.id = \"0x0000003a\".*$/obj.id = \"0x0000003a\" ; obj.value = \"\@CN\#Common\&\"/g' -i
        fi
       
        #保存程序特征字和配置特征字到文件/mnt/jffs2/customize.txt,getcustomize.sh从这个文件中读取,为了保证boardinfo能够完全写入,需要放在最后面
        echo $var_bin_ft_word $var_cfg_ft_word_save > $var_jffs2_customize_txt_file
}

#设置typeword字段
HW_Customize_Set_CFGTypeFile()
{
        #后面会进行检查,再次不检查boardinfo是否存在
        echo $var_jffs2_boardinfo_file | xargs sed 's/obj.id = \"0x00000035\" ; obj.value = \"*\"/obj.id = \"0x00000035\" ; obj.value = \"'$1'\"/g' -i
        return 0
}

#设置cfg fileword
HW_Set_CfgFile_Word()
{
        if [ -z "$var_typeword" ]
        then
                HW_Customize_Set_CFGTypeFile ""
                #不带typeword,删去typeword文件(之前定制的typeword)
                rm -f /mnt/jffs2/typeword
        else
                HW_Customize_Set_CFGTypeFile "$var_typeword"
        fi
        return 0
}

# 参数检测
HW_Customize_Check_Arg()
{
        if [ -z "$var_bin_ft_word" ] || [ -z "$var_cfg_ft_word" ]
        then
                echo "ERROR::The binfeature word and cfgword should not be null!"
                return 1
        fi

        return 0
}

# 如果是COMMON_WIFI ~COMMON定制,则将BinWord由COMMON_WIFI->COMMON,依然走定制流程
# 如果CfgWord以wifi结尾,则去掉"wifi"字符串
HW_Change_Customize_Parameter()
{
        if [ "$var_bin_ft_word" = "COMMON_WIFI" ] ; then
        {
                var_bin_ft_word="COMMON"
        }
        fi

        #判断配置特征字是否以WIFI结尾,如果是则删除
        var_cfg_ft_word_temp=`echo "$var_cfg_ft_word" | sed 's/WIFI$//g'`
        if [ "$var_bin_ft_word" = "CMCC" ] && [ "$var_cfg_ft_word_temp" != "CMCC_RMS2" ] ; then
                var_cfg_ft_word_cmcc="$var_cfg_ft_word_temp"
                var_cfg_ft_word_temp=`echo "$var_cfg_ft_word_cmcc" | sed 's/2$//g'`
               
        fi
       

        shift 2

        var_input_para="$var_bin_ft_word ""$var_cfg_ft_word_temp ""$*"

        return 0
}

# 如果CfgWord中去掉_SIP或者_H248字符
HW_Change_Customize_ParameterForVspa()
{
        #如果配置特征字中没有_SIP或者_H248则直接返回,不显示
        echo $var_cfg_ft_word | grep -iE "_SIP|_H248" > /dev/null
        if [ ! $? == 0 ]
        then
                return 0
        fi

        #删除配置特征字中去掉'_'后字符,并重新构造配置参数,作为Customize程序的参数
        var_cfg_ft_word_temp=`echo "$var_cfg_ft_word" | sed 's/_.*//g'`
        shift 2#输入参数左移动2个
        var_input_para="$var_bin_ft_word ""$var_cfg_ft_word_temp ""$*"
        return 0
}

#设置CHOOSE字段
HW_Customize_Set_Choose()
{
        #后面会进行检查,再次不检查boardinfo是否存在
        echo $var_jffs2_boardinfo_file | xargs sed 's/obj.id = \"0x00000031\" ; obj.value = \"*\"/obj.id = \"0x00000031\" ; obj.value = \"'$1'\"/g' -i
        return 0
}

# 资源检测
HW_Customize_Check_Resource()
{
        #HGU需要关注免预配置定制,需要涉及CHOOSE_WORD字段修改,SFU则可以直接传入
        if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ] \
        || [ "$var_cfg_ft_word" = "UNICOM" ] \
        || [ "$var_cfg_ft_word" = "UNICOM_BUCPE" ] \
        || [ "$var_cfg_ft_word" = "UNICOMBRIDGE" ] \
        || [ "$var_cfg_ft_word" = "BZTLF2" ] \
        || [ "$var_cfg_ft_word" = "BZTLF2WIFI" ] \
        || [ "$var_cfg_ft_word" = "CMCC" ] \
        || [ "$var_cfg_ft_word" = "CMCC_BUCPE" ] \
        || [ "$var_cfg_ft_word" = "CMCCWIFI" ] \
        || [ "$var_cfg_ft_word" = "CMCC_RMS" ] \
        || [ "$var_cfg_ft_word" = "CMCC_RMS2" ]\
        || [ "$var_cfg_ft_word" = "CMCC_RMS2WIFI" ]\
        || [ "$var_cfg_ft_word" = "CMCC_RMSWIFI" ] \
        || [ "$var_cfg_ft_word" = "CMCC_RMSBRIDGE" ]; then
                shift 2
                if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ]; then
                        var_input_para="$var_bin_ft_word ""$var_cfg_ft_word1 ""$*"
                elif [ "$var_cfg_ft_word" = "CMCCWIFI" ]; then
                        var_input_para="$var_bin_ft_word ""CHOOSE_CMCC ""$*"       
                elif [ "$var_cfg_ft_word" = "CMCC_RMS2WIFI" ]; then
                        var_input_para="$var_bin_ft_word ""CHOOSE_CMCC_RMS2 ""$*"
                elif [ "$var_cfg_ft_word" = "CMCC_RMSWIFI" ]; then
                        var_input_para="$var_bin_ft_word ""CHOOSE_CMCC_RMS ""$*"
                elif [ "$var_cfg_ft_word" = "BZTLF2WIFI" ]; then
                        var_input_para="$var_bin_ft_word ""CHOOSE_BZTLF2 ""$*"
                else
                        if [ $var_is_HGU -eq 1 ] ; then
                        var_input_para="$var_bin_ft_word ""CHOOSE_$var_cfg_ft_word1 ""$*"
                        else
                                var_input_para="$var_bin_ft_word ""$var_cfg_ft_word1 ""$*"
                        fi
                fi
        fi

        #现在TELMEX只支持12个参数(customize.sh后面的),格式如下:
        #customize.sh COMMON TELMEX SSID WEP_KEY PPPoE_user PPPoE_pwd TR069_user TR069_pwd WEB_pwd CLI_user CLI_pwdWPA_pwd
        if [ $var_cfg_ft_word == "TELMEX" ]
        then
                #对于之前的已经用5个参数定制的整机,返工场景(重新定制,要删除该文件,否则定制检查会失败)
                if [ -f $var_customize_telmex ]
                then
                        rm -rf $var_customize_telmex
                fi
                #只支持12个参数(除customize.sh以外的其他参数)
                if [ 12 -ne $var_para_num ]
                then
                        echo "ERROR::input para must be COMMON TELMEX SSID WEP_KEY PPPoE_user PPPoE_pwd TR069_user TR069_pwd WEB_pwd CLI_user CLI_pwdWPA_pwd !"
                        return 1
                fi
        fi

        # 调用Customize进程进行装备资源的校验, 把文件暂时写入typeword 暂时写入/mnt/jffs2/typeword 文件。 如果不通过文件传递,通过argv 传递
        # 需要函数扩展的函数有十个左右,且在Customize APP 中需要扩展解析该字段。
        if [ -f /mnt/jffs2/typeword ]; then
                cp -f /mnt/jffs2/typeword /mnt/jffs2/typeword_bak
        fi
        echo $var_typeword > /mnt/jffs2/typeword
       
        #检测是是否在生产过程中写入specsn文件,重新返工需要将此文件删除。
        if [ -f $var_jffs2_specsn_file ]
        then
                rm -rf $var_jffs2_specsn_file
        fi

        if [ ! -f /var/customize_flag ]        ;then
                echo > /var/customize_flag
        fi
        Customize $var_input_para

        var_result=$?

        if [ 0 -eq $var_result ]
        then
                #写boardinfo和文件
                HW_Set_CfgFile_Word
                rm -f /mnt/jffs2/typeword_bak
        else
                #定制失败, 如果存在备份文件,还原备份
                if [ -f /mnt/jffs2/typeword_bak ]; then
                        mv -f /mnt/jffs2/typeword_bak /mnt/jffs2/typeword
                else
                        #第一次定制失败
                        rm -f /mnt/jffs2/typeword
                fi               
               
                if [ -f /mnt/jffs2/customizepara.txt ] ; then
                        rm -f /mnt/jffs2/customizepara.txt
                fi
               
        fi

        return 0
}

HW_Customize_Check_PCCWMacCheck()
{
        # 如果是PCCW,需要进行WLAN MAC的校验
        if [ "$var_cfg_ft_word" = "PCCW3MAC" ] || [ "$var_cfg_ft_word" = "PCCW3MACWIFI" ] \
          || [ "$var_cfg_ft_word" = "PCCW4MAC" ] || [ "$var_cfg_ft_word" = "PCCW4MACWIFI" ]
        then
                pccwmaccheck $var_input_para
                var_pccwresult=$?
        else
                var_pccwresult=0
        fi

        return 0
}

#定制处理
HW_Customize_Delete_File()
{
        rm -f $var_telnet_flag
        rm -f $var_boardinfo_bakfile
        rm -f /mnt/jffs2/smooth_finish
        return 0
}

# 结果输出
HW_Customize_Print_Result()
{
        # 根据不同的执行结果,返回不同的错误内容
        if [ 0 -eq $var_result ]
        then
                #pccw3mac pccw4mac定制中需进行wlanmac的校验
                HW_Customize_Check_PCCWMacCheck $var_input_para
                if [ 0 -eq $var_pccwresult ]
                then
                        HW_Set_Feature_Word
                        if [ ! $? == 0 ]
                        then
                                echo "ERROR::Failed to set Feature Word!"
                        return 1
                fi
                elif [ 1 -eq $var_pccwresult ]
                then
                echo "ERROR::input para number is not enough!"
                return 1
                elif [ 2 -eq $var_pccwresult ]
                then
                echo "ERROR::SSIDMAC fail!"
                return 1
                else
                echo "ERROR::customize fail!"
                return 1
                fi
                return 0
        elif [ 1 -eq $var_result ]
        then
                echo "ERROR::input para number is not enough!"
                return 1
        elif [ 2 -eq $var_result ]
        then
                echo "ERROR::Updateflag file is not existed!"
                return 1
        elif [ 3 -eq $var_result ]
        then
                echo "ERROR::config tar file is not existed!"
                return 1
        elif [ 4 -eq $var_result ]
        then
                echo "ERROR::Null pointer!!"
                return 1
        elif [ 5 -eq $var_result ]
        then
                echo "ERROR::XML parse fail!!"
                return 1
        elif [ 6 -eq $var_result ]
        then
                echo "ERROR::XML get node or attribute fail!"
                return 1
        elif [ 7 -eq $var_result ]
        then
                echo "ERROR::XML get relation node fail!"
                return 1
        elif [ 8 -eq $var_result ]
        then
                echo "ERROR::Spec file is not existed!"
                return 1
        elif [ 9 -eq $var_result ]
        then
                echo "ERROR::Set bin word fail!"
                return 1
        elif [ 10 -eq $var_result ]
        then
                echo "ERROR::Set config word fail!"
                return 1
        elif [ 11 -eq $var_result ]
        then
                echo "ERROR::Uncompress tar fail!"
                return 1
        elif [ 12 -eq $var_result ]
        then
                echo "ERROR::Config file is not existed!"
                return 1
        elif [ 13 -eq $var_result ]
        then
                echo "ERROR::Recover file is ont existed!"
                return 1
        elif [ 14 -eq $var_result ]
        then
                echo "ERROR::Run script fail!"
                return 1
        elif [ 15 -eq $var_result ]
        then
                echo "ERROR::Create new recover config file fail!"
                return 1
        elif [ 16 -eq $var_result ]
        then
                echo "ERROR::Create old recover config file fail!"
                return 1
        elif [ 17 -eq $var_result ]
        then
                echo "ERROR::Copy spec default ctree fail!"
                return 1
        elif [ 18 -eq $var_result ]
        then
                echo "ERROR::Check Choose Res fail!"
                return 1
        elif [ 19 -eq $var_result ]
        then
                echo "ERROR::Resolver customize file fail!"
                return 1
        else
                echo "ERROR::customize fail!"
                return 1
        fi

        return 0
}

#HGU才支持免预配置,在此做判断
HW_Customize_CheckIsHGU()
{
        cat /proc/wap_proc/pd_static_attr | grep -w pdt_type | grep HGU > /dev/null
        if [ $? -eq 0 ] ; then
                return 1
        fi

        return 0
}

#Java进程占用CPU过高,导致定制超时
HW_Customize_ReleaseResource()
{
        procid="";
       
        if [ -f /bin/osgi_proxy ] ; then
                echo > /var/kill_java
               
                procid=`pidof procmonitor`   
                if [ "$procid" != "" ] ; then
                        kill -15 $procid                       
                fi

                procid=`pidof osgi_proxy`                  
                if [ "$procid" != "" ] ; then
                        kill -9 $procid
                fi       
               
                procid=`pidof java`
                if [ "$procid" != "" ] ; then
                        kill -9 $procid
                fi                                                               
        fi
}


#echo /proc/pdt_proc/save_boardinfo to save boardinfo for add chooseid
echo "1" >/proc/pdt_proc/save_boardinfo

#参数检测:至少应该包含BinWord&SpecWord
HW_Customize_Check_Arg
[ ! $? == 0 ] && exit 1

HW_Customize_ReleaseResource

#参数处理
HW_Change_Customize_Parameter $var_input_para

#参数处理,主要是将配置特征字中的_SIP和_H248进行过滤
HW_Change_Customize_ParameterForVspa $var_input_para

#HGU才可以免预配置定制,免预配置定制才涉及CHOOSE_WORD的处理
HW_Customize_CheckIsHGU
if [ $? -eq 0 ] ; then
        var_is_HGU=0
fi

#免预配置模式,添加NOCHOOSE字段,并初始化为CHOOSE_XXX
if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ] \
|| [ "$var_cfg_ft_word" = "UNICOM" ] \
|| [ "$var_cfg_ft_word" = "UNICOM_BUCPE" ] \
|| [ "$var_cfg_ft_word" = "UNICOMBRIDGE" ] \
|| [ "$var_cfg_ft_word" = "BZTLF2" ] \
|| [ "$var_cfg_ft_word" = "BZTLF2WIFI" ] \
|| [ "$var_cfg_ft_word" = "CMCC" ] \
|| [ "$var_cfg_ft_word" = "CMCC_BUCPE" ] \
|| [ "$var_cfg_ft_word" = "CMCCWIFI" ] \
|| [ "$var_cfg_ft_word" = "CMCC_RMS" ] \
|| [ "$var_cfg_ft_word" = "CMCC_RMS2" ] \
|| [ "$var_cfg_ft_word" = "CMCC_RMSWIFI" ] \
|| [ "$var_cfg_ft_word" = "CMCC_RMS2WIFI" ] \
|| [ "$var_cfg_ft_word" = "CMCC_RMSBRIDGE" ] ; then
{
        #HW_Customize_Add_Choose
        if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ]; then
                HW_Customize_Set_Choose "$var_cfg_ft_word"
        elif [ "$var_cfg_ft_word" = "UNICOMBRIDGE" ] ; then
                HW_Customize_Set_Choose "CHOOSE_UNICOM"       
        elif [ "$var_cfg_ft_word" = "BZTLF2WIFI" ] ; then
                HW_Customize_Set_Choose "CHOOSE_BZTLF2"
        elif [ "$var_cfg_ft_word" = "CMCC_RMSBRIDGE" ] ; then
                HW_Customize_Set_Choose "CHOOSE_CMCC_RMS"
        elif [ "$var_cfg_ft_word" = "CMCC" ] ; then
                HW_Customize_Set_Choose "CHOOSE_$var_cfg_ft_word"
        elif [ "$var_cfg_ft_word" = "CMCCWIFI" ] ; then
                HW_Customize_Set_Choose "CHOOSE_CMCC"
        elif [ "$var_cfg_ft_word" = "CMCC_RMSWIFI" ] ; then
                HW_Customize_Set_Choose "CHOOSE_CMCC_RMS"
        elif [ "$var_cfg_ft_word" = "CMCC_RMS2WIFI" ] ; then
                HW_Customize_Set_Choose "CHOOSE_CMCC_RMS2"
        elif [ "$var_cfg_ft_word" = "CMCC_BUCPE" ] ; then
                HW_Customize_Set_Choose "CHOOSE_CMCC_BUCPE"
        elif [ "$var_cfg_ft_word" = "UNICOM_BUCPE" ] ; then
                HW_Customize_Set_Choose "CHOOSE_UNICOM_BUCPE"
        else
                #COMMON/UNICOM定制只有HGU支持免预配置
                if [ $var_is_HGU -eq 1 ]; then
                        HW_Customize_Set_Choose "CHOOSE_$var_cfg_ft_word"
                else
                        HW_Customize_Set_Choose ""
                fi
        fi
}
else
{
        HW_Customize_Set_Choose ""
}
fi

HW_Customize_Check_Resource $var_input_para
[ ! $? == 0 ] && exit 1

# 结果输出
HW_Customize_Print_Result $var_input_para
[ ! $? == 0 ] && exit 1

#定制处理
HW_Customize_Delete_File
echo > /var/notsaveboardinfo
sync
echo "success!" && exit 0

-----------------------------------------------------------

附上下载地址

yehaku 发表于 2018-3-26 01:04:05

customize.sh COMMON TELMEX SSID WEP_KEY PPPoE_user PPPoE_pwd TR069_user TR069_pwd WEB_pwd CLI_user CLI_pwdWPA_pwd
这个是光猫内部定制的参数命令

腿哥已注册 发表于 2018-3-26 01:43:09

我手工刷的停在itms验证上了 过两天试试楼主的

ldsgrh 发表于 2018-3-26 06:17:51

支持楼主,收藏备用

磊石头 发表于 2018-3-26 08:35:53

搞,大,上。强烈支持技术贴

磊石头 发表于 2018-3-26 08:42:12

win10装个linux子系统可以直接调试修改,或者一个Windows下的git编译器

qq519948746 发表于 2018-3-26 09:41:02

请教下你们用什么修改.sh执行脚本。
我用Notepad++修改 后无法执行都是添加的简单的命令 rm,tar,cp之类的基本命令 没发现语法错误
页: [1] 2 3 4 5 6
查看完整版本: HS8145V 8546V restorehwmode.sh 恢复华为界面脚本解析