找回密码
 注册

QQ登录

只需一步,快速开始

查看: 46437|回复: 57

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

[复制链接]
发表于 2018-3-25 19:04:27 | 显示全部楼层 |阅读模式
HS8145V 8546V restorehwmode.sh 恢复华为界面脚本解析" V) T7 ~* h& |1 z2 Y% i2 K& c  o/ ^
根据脚本可以逆转还原成以前的界面和改成其他运营商的界面
, \1 ^6 v" r/ M; W& `+ O. @9 N% h2 M6 M8 h# S6 i
#! /bin/sh% F2 h. z' @: O
8 j9 t1 l* F& Y! w
#set hw parameters0 L' |- l: v' G  g5 m% H
#copy etc/wap/hw_default_ctree.xml to /mnt/jffs2/hw_ctree.xml
- b" z1 c1 K& Z9 e: n$ }. `" g#set the spec para
" F% d, s& F  I- Q( a) x' f! e5 h
0 R/ {7 ?( S6 K! m+ d$ vvar_default_ctree=/mnt/jffs2/hw_default_ctree.xml;
. w! {& _, b% K: [var_ctree=/mnt/jffs2/hw_ctree.xml3 d3 P( [7 E# f: B/ Z; W
var_customize=/mnt/jffs2/customizepara.txt
& J7 N% k( l5 z3 ^" I( U* svar_bms_prevxml_temp="/mnt/jffs2/hw_bms_prev.xml"
& v( ]8 e! E% j+ a* Uvar_bms_oldcrc_temp="/mnt/jffs2/oldcrc"
: `5 j" G+ R4 a  Kvar_bms_oltoldcrc_temp="/mnt/jffs2/oltoldcrc"
4 S& r. Q' N" e5 g2 \, x5 Hvar_bms_prevcrc_temp="/mnt/jffs2/prevcrc"* _6 ^) H, A7 X
var_bms_oltprevcrc_temp="/mnt/jffs2/oltprevcrc"
+ A6 `$ ?; Q. s# d0 _: A* Nvar_bms_oskvoice_temp="/mnt/jffs2/hw_osk_voip_prev.xml"
$ L/ p! I, p+ b: tvar_rebootsave="/mnt/jffs2/cwmp_rebootsave"
# M$ t) u3 x; a5 X# {1 Hvar_recovername_temp="/mnt/jffs2/recovername"
4 k, D. G! _1 A1 r" h9 mvar_usr_device_temp="/mnt/jffs2/usr_device.bin"4 e, m" U$ o, ]  b: X
var_ftcrc_temp="/mnt/jffs2/FTCRC"
# q6 Y2 @) Q) e9 N5 pvar_ftvoip_temp="/mnt/jffs2/ftvoipcfgstate": H, Z& Y5 h/ @' N. k: o/ V
var_dhcp_temp="/mnt/jffs2/dhcpc"
5 F& f) I* _$ Zvar_dhcp6_temp="/mnt/jffs2/dhcp6c"
& J% h8 M4 B  c/ h6 v' jvar_DHCPlasterrwan1_temp="/mnt/jffs2/DHCPlasterrwan1"
( ]. r% `8 W& pvar_DHCPlasterrwan2_temp="/mnt/jffs2/DHCPlasterrwan2"
! M+ i0 y1 i6 }. _: a& t) nvar_DHCPlasterrwan3_temp="/mnt/jffs2/DHCPlasterrwan3"
$ P0 j% m% J$ y% }7 _var_DHCPlasterrwan4_temp="/mnt/jffs2/DHCPlasterrwan4"
6 b# l3 c3 e$ rvar_DHCPstatewan1_temp="/mnt/jffs2/DHCPstatewan1"9 X  X0 G" \7 S, b( h% U3 d' \
var_DHCPstatewan2_temp="/mnt/jffs2/DHCPstatewan2"4 I8 o& p7 e- a7 ^
var_DHCPstatewan3_temp="/mnt/jffs2/DHCPstatewan3") c3 P% R9 I# T1 l# C
var_DHCPstatewan4_temp="/mnt/jffs2/DHCPstatewan4"
- V& u$ |8 W1 U: ?" I. h; lvar_DHCPoutputwan1_temp="/mnt/jffs2/DHCPoutputwan1"8 U! B5 {- @: Q" l* H7 t; i- j( `
var_boardinfo_file="/mnt/jffs2/hw_boardinfo"
) [) r9 C7 T( \% D7 O: ~1 {var_boardinfo_bakfile="/mnt/jffs2/hw_boardinfo.bak"
6 b1 n- n: a; M6 \6 Qvar_boardinfo_temp="/mnt/jffs2/hw_boardinfo.temp"
0 Y. f4 Y- x9 s2 D+ @var_jffs2_customize_txt_file="/mnt/jffs2/customize.txt"
7 W) L! d+ s" {7 z9 T/ N3 vvar_jffs2_choose_xml_dir="/mnt/jffs2/choose_xml". i9 ~4 M3 `" Q+ a
var_jffs2_choose_xml_tar="/mnt/jffs2/choose_xml.tar.gz"7 p. Z! T, m" d) A, m  Y* y( ?
var_jffs2_spec_file="/mnt/jffs2/hw_hardinfo_spec"
" G( L$ ~: \& u+ C" F0 |4 Ovar_jffs2_spec_bak_file="/mnt/jffs2/hw_hardinfo_spec.bak"
# T3 ^  b. j# E" R" R1 ~var_jffs2_feature_file="/mnt/jffs2/hw_hardinfo_feature"
1 j5 ^3 L+ w+ O) }+ jvar_jffs2_feature_bak_file="/mnt/jffs2/hw_hardinfo_feature.bak"; |& Q8 n; x# g) R, E/ R* d
var_jffs2_hardinfo_para_file="/mnt/jffs2/hw_equip_hardinfo"
; V  X: w6 q& }4 B  `  ^1 ^7 Nvar_ontfirstonline_temp="/mnt/jffs2/ontfirstonlinefile"
/ N4 k: w1 a) U" F( e; B' S5 Uvar_dublecore="/mnt/jffs2/doublecore"
! [7 A1 w* I$ j, r) U& Kvar_customize_telmex=/mnt/jffs2/TelmexCusomizePara
' k9 L9 k9 j. A6 \var_customize_dir="/mnt/jffs2/customize"
4 x1 W$ w% s- Avar_smartshowbssguide="/mnt/jffs2/smartshowbssguide"( ?" O+ S( _- ^  F3 S: H: D
var_smartshowuserguide="/mnt/jffs2/smartshowuserguide"
6 W. `! E9 m9 N# T$ v& w+ L4 O3 Fvar_old_ctree="/mnt/jffs2/hw_old_ctree.xml"1 \* [, E1 s, q( z! U; o1 P8 |
var_ctree_bak="/mnt/jffs2/hw_ctree_bak.xml"
( v) Q" k# T2 Ivar_cfgbackup="/mnt/jffs2/CfgFile_Backup", J' j( F: P; O4 u: G) C" H+ u
var_PrimaryDir="/mnt/jffs2/PrimaryDir"+ k/ K) }, }4 z4 O2 [% j! s
var_p2p_dhcp_file="/mnt/jffs2/p2pdhcpboot_prev.ini"
) k4 {. A6 G! W0 lvar_jffs2_hardversion_bak_file="/mnt/jffs2/hw_boardinfo.bak"5 J2 d* r; |: Z5 J* V: ]
var_jffs2_specsn_file="/mnt/jffs2/customize_specsn"
/ |. j8 `/ v; _2 Q' q9 U2 `1 A. j8 @5 J
var_plat_root="/mnt/jffs2/platroot.crt"
" x% ^/ `) W  i; N2 |7 O: r5 Uvar_plat_pub="/mnt/jffs2/platpub.crt"  _4 h) A% E* G4 ?
var_plat_prvt="/mnt/jffs2/platprvt.key"; _; h, w5 g% y( J# m
5 @7 ]$ _5 i# j" D' u8 I4 j, E
# remove plugin files
' ]9 N& A' Z& ^HW_Script_RemovePluginFile()/ p' M. ~$ B4 [( {, s; F
{
- b4 s/ ^6 U% H( F3 V, T" D6 B2 l        #通过特性开关来决定删除哪些插件
) e1 _* j* O) [  E        var_feature_enble=`GetFeature HW_FT_OSGI_JVM_FROM_VAR`
, o# p6 z# _/ I" l        if [ $var_feature_enble = 1 ];then
* c' z0 d% |$ K' J; r3 a' Z                rm  -rf /mnt/jffs2/app/osgi/felix-cache;
3 c( D. s3 o7 o  z        rm  -f /mnt/jffs2/app/osgi/prebundlestatus.info;
# m0 J+ v- l' @7 n" `$ i        rm  -f /mnt/jffs2/app/osgi/dlna.jar;( v. z" L9 p8 i, p2 Q
        rm  -f /mnt/jffs2/app/osgi/samba.jar;
2 e) s1 B  {+ A' r& m        else
1 [' g2 p2 O% Z* h" L                rm  -rf /mnt/jffs2/app/osgi/* ;4 H# c& ~9 |* f: J$ f; h
        fi
0 Y$ f& _- W! N( f" n& M& i9 F        rm -rf  /mnt/jffs2/app/cplugin/* /var/cplugin/*;, N: e* w' z3 H5 ?7 u1 }( u. x
}! J5 C" Z) k% p

, A8 [& K3 t8 ~  L' [6 V' W# remove files6 @, }7 S" @) m8 m0 \/ e' g6 G
HW_Script_RemoveFile()
, N+ J7 [5 d; p" o{
6 \5 s6 @: J- Q& D5 k. B( A        rm -f $var_default_ctree) K2 @  @3 m6 H
        rm -f $var_ctree3 N- W. }: t1 a3 W
        rm -f $var_customize' X8 i; G( P4 y  C7 g% h
        rm -f $var_bms_prevxml_temp
: M% C' S: p9 j9 u+ f% A, U        rm -f $var_bms_oldcrc_temp6 L% T# V6 y: @# Z7 l! G
        rm -f $var_bms_oltoldcrc_temp
4 j, V& _9 O8 v: f        rm -f $var_bms_prevcrc_temp
) b' X3 d* ]9 B. U( a' |! _        rm -f $var_bms_oltprevcrc_temp
9 v. _8 n3 o  a$ R/ i5 g9 ~        rm -f $var_bms_oskvoice_temp5 z, z: ~) x: w+ a, \6 K
        rm -f $var_rebootsave: `. s' D2 e8 ?0 k( J
        rm -f $var_recovername_temp
9 b) d* m/ D6 Y        rm -f $var_usr_device_temp7 J6 r% p5 b1 e# L6 @' S
        rm -rf $var_ftcrc_temp
6 {. h: X2 ?$ C: v% D& X! F. d        rm -rf $var_ftvoip_temp
. t6 \- S4 W+ O. w0 ^/ n8 w        rm -rf $var_dhcp_temp" F, Y' N: |$ g+ B& ?9 G& R
        rm -rf $var_dhcp6_temp
, R1 `& I! o/ p  r  t$ }) z        rm -rf $var_DHCPlasterrwan1_temp
" N3 A! P& b+ z+ v* |4 j" Y$ A: N        rm -rf $var_DHCPlasterrwan2_temp
' h+ j) H0 q: p6 |        rm -rf $var_DHCPlasterrwan3_temp+ h# H- H1 }2 Y0 `- {
        rm -rf $var_DHCPlasterrwan4_temp
7 s0 B; p' L6 ^6 j% e0 M4 |/ l        rm -rf $var_DHCPstatewan1_temp! V( I  v- {" f- C9 w
        rm -rf $var_DHCPstatewan2_temp
  O( i/ K3 d+ R1 M; A. z        rm -rf $var_DHCPstatewan3_temp, B1 g. ~! k! F6 [
        rm -rf $var_DHCPstatewan4_temp
0 z% U# i+ f! o' _  J& l        rm -rf $var_DHCPoutputwan1_temp) ~  v. Z# Q& R5 m
        rm -rf $var_jffs2_customize_txt_file
8 W# z9 [* `! x9 R        rm -rf $var_jffs2_choose_xml_dir
; A2 g9 L. }" c7 I( B+ i- Y        rm -f $var_jffs2_choose_xml_tar
1 a2 n5 l$ W+ `; J$ q. B7 J& v        rm -fr $var_jffs2_spec_file" x: Z) d. S0 \* ^6 f
        rm -fr $var_jffs2_spec_bak_file( i0 S; U9 G) u# J2 a: O
        rm -fr $var_jffs2_feature_file
% _( d) q; A6 f# X7 W' l        rm -fr $var_jffs2_feature_bak_file; q8 r0 F0 }9 f0 w5 F0 G
        rm -fr $var_jffs2_hardinfo_para_file7 d3 p( R" v: l4 m5 O
        rm -fr $var_ontfirstonline_temp
" Z. Z& v: Q" f, P' b        rm -f $var_dublecore  t* M$ c# N; ]5 n; I
        rm -f /mnt/jffs2/simcard_flowflag
' ?$ R! l# R7 R/ k/ R        rm -f /mnt/jffs2/simcardreadflag5 m! l. e  U0 s, @2 c
        rm -f /mnt/jffs2/typeword+ ]* P  K, I0 \- X7 v) W( M0 \
        rm -f $var_customize_telmex! Z' e3 g) k  y9 w  r
        rm -rf $var_customize_dir
* X" h1 C3 ]6 x: _5 |& t8 {% S2 i        rm -f $var_smartshowbssguide. M; Y$ |# |( @
        rm -rf $var_smartshowuserguide
* G8 v- D+ P$ t* \* _- T/ B3 g6 c9 Q        rm -fr $var_old_ctree
4 g2 |6 z1 r9 x& @7 I        rm -fr $var_ctree_bak- H+ H- J. u8 O0 h9 u" r7 r
        rm -fr $var_cfgbackup3 K- _' W3 j  |+ D; e1 s- }
        rm -f $var_jffs2_hardversion_bak_file& |, ^( r% _! b2 {" _
        rm -rf $var_PrimaryDir
3 [- e. [9 T0 i" p9 |7 i- f: W! z7 j        rm -rf /mnt/jffs2/p2ploadcfgdone' h; @9 p9 U9 Y0 t9 R6 b* B
        rm -rf /mnt/jffs2/dhcp6c$ ?1 g/ F4 ]/ n% W! Y* ^5 J5 N  I2 N5 f
    rm -rf /mnt/jffs2/dhcpc8 N/ ?& \: t8 x4 `0 z5 u6 S8 E& y
        rm -rf /mnt/jffs2/onlinecounter, Y; s' {7 I# b. r8 ^
        rm -rf $var_jffs2_specsn_file
/ d; C* N/ t" s) t* H/ C        rm -rf /mnt/jffs2/reboot_bind_tag- D4 V1 u/ K+ `  D& B, @
        rm -rf $var_p2p_dhcp_file. C, f/ o) l8 L# }) ^
               
9 ^$ V7 I7 N( R* h' c8 F        rm  -rf /mnt/jffs2/app/osgi/*% s" m/ u& G1 N/ n4 P
        rm  -rf /mnt/jffs2/app/cplugin/*1 [* m. `7 a  Q. x# P1 t
        . h. B- I; @+ A! s9 O: X' \
        rm -f /mnt/jffs2/smooth_finsh9 p' f% @8 G( y) h& q. L& G1 @( s+ Y2 \
        # [/ z, n! X( V4 g8 R: C
        rm -f $var_plat_root3 {) u, c3 S- r/ e& q8 Y( f
        rm -f $var_plat_pub+ u% [( b) e4 F4 H- c
        rm -f $var_plat_prvt) p1 i$ T& m- ^$ B3 a0 j8 R
! i4 P6 S6 k& h/ }7 P
        HW_Script_RemovePluginFile
3 g. M9 E* P9 ?6 D( a: d0 @( e" e: e        return
: |) `8 W" R' [9 a4 a' s5 P( `}
3 V" j% `# U- ^% z; g/ b
' s9 K  P! E" G# p#creat files$ q8 l" i, W& q6 N+ x
HW_Script_CreateFile(). R' d: e6 E4 o) ^! O/ X
{0 Z: p* a- Z0 w
        var_telnet_flag=/mnt/jffs2/ProductLineMode% u0 D9 }2 \# {, G! O2 c
* n" B$ O" f1 U8 G2 {* h6 v
        echo "" > $var_telnet_flag6 e3 S2 s4 c3 a+ v0 e, z
        if [ 0 -ne $? ]7 u5 ^2 t* }8 h
        then& \# V1 N7 ]) `% A7 r( J( ?
        {
5 k, k( V4 T+ ~& ~2 u9 @5 N9 a                echo "ERROR::Failed to create telnet flag!"3 q' t  H4 i! }, P+ o9 x
        return 18 O3 ?! ~5 v' r5 H  t& d) F
        }6 y, s7 V4 M& M$ `# E. S
        fi
0 t) P3 h* n, {4 [0 j& H, z
3 j1 w6 k! C6 `: T0 X& M        return 01 a" a4 Y. C0 C, ]/ f) I
}
: h/ ]; v! h' |+ x+ U; `6 l: K- h$ X2 f' C: e
# copy files2 B! \" C- w& o" @
HW_Script_CopyFile()  k+ F# [% t1 L
{
: T; G# O. c2 y* g9 E2 X9 ?        var_etc_def=/etc/wap/hw_default_ctree.xml
3 k0 z" f3 G3 p       
8 p, D. a4 D1 b: o3 X1 {) f        #增加延时,确保DB不保存
8 }4 A. |% y9 L* K8 i' g        echo > /var/notsavedata
2 g5 y4 @. ]  n3 y; ^: {        sleep 1# J  Z+ w) A% v8 P

. |5 t% B% w* M  J        cp -f $var_etc_def $var_ctree) U2 ?  \8 v( q; ^  u8 M- [1 n
        if [ 0 -ne $? ]
5 k) d( W. t7 k) N; ]7 b        then
6 t; _: v5 l" @% [$ W( A6 w* f1 v                rm -rf /var/notsavedata4 R- d; U" {% i: U! _4 {' [) J
                echo "ERROR::Failed to cp hw_default_ctree.xml to hw_ctree.xml!"! Y, s* u* W0 Q+ H( @
                return 1. j4 e4 T) Q! b1 P- u9 N; q
        fi
+ B, Q: j( O* |4 t* \4 l
: X, Y& b! z7 i1 d6 l* q) u        return
) d+ S: [7 x$ i}
0 n2 k' j& O/ @  p/ {3 K6 n% g' B6 x9 U( z1 [
# set spec data9 D4 k( K: E/ a) M
HW_Script_SetData()
8 N+ w4 s" A0 A4 q9 i4 e{: d/ X: {8 q  `7 x; R8 y3 h% u
        cat $var_boardinfo_file | while read -r line;
" z. s# r/ {5 M0 W( J! u5 w        do
( K7 }' I: @* f  _5 v5 D# m0 p                obj_id_temp=`echo $line | sed 's/\(.*\)obj.value\(.*\)/\1/g'`; P# S9 v1 i1 G  o; }2 M
                obj_id=`echo $obj_id_temp | sed 's/\(.*\)"\(.*\)"\(.*\)/\2/g'`
* A8 E2 W6 X) P
. ?, `" h( L% S( w0 C! ]! ]6 h# [: j' g                if [ "0x00000003" == $obj_id ];then- y' X7 D5 R; o/ M8 H& {
                        echo "obj.id = \"0x00000003\" ; obj.value = \"\";"
: w& W# X9 z( b9 I+ R) E                elif [ "0x00000004" == $obj_id ];then7 A. Q. P( m6 Z7 C( [
                        echo "obj.id = \"0x00000004\" ; obj.value = \"\";"
3 x* j, J6 U% ~7 o0 @: G                elif [ "0x00000005" == $obj_id ];then
' H" b$ T' E- N                        echo "obj.id = \"0x00000005\" ; obj.value = \"\";"
; m& {6 N* N# b! E; d- }                elif [ "0x00000006" == $obj_id ];then; Y5 ?' |0 g+ }' k. @4 W, y( G1 g
                        echo "obj.id = \"0x00000006\" ; obj.value = \"\";"! D( `8 Y- H& x. E. }, z
                elif [ "0x00000016" == $obj_id ];then( z3 s* m3 |/ |! u( Z
                        echo "obj.id = \"0x00000016\" ; obj.value = \"\";"
; r! o- R; ^7 U, h- W0 @  z2 B& X                elif [ "0x0000001a" == $obj_id ];then
  R( Q! W2 ?  ^6 d  ?                        echo "obj.id = \"0x0000001a\" ; obj.value = \"COMMON\";"' H/ b2 x& I$ {( w9 u1 [7 A! o$ E
                elif [ "0x0000001b" == $obj_id ];then
% \7 F4 N0 D4 }/ g4 z0 h                        echo "obj.id = \"0x0000001b\" ; obj.value = \"COMMON\";"
0 c- E/ e; o5 v# _  Z$ F: S                elif [ "0x00000019" == $obj_id ];then
* S7 f$ Y& a% F! z+ ?  y9 B. O                        echo "obj.id = \"0x00000019\" ; obj.value = \"\";"
2 ~4 x/ G8 c% Q2 t& L% a+ a                elif [ "0x00000020" == $obj_id ];then. b. Z  |- v! o' A* P# Z* N
                        echo "obj.id = \"0x00000020\" ; obj.value = \"\";"/ k7 b7 ?0 E; V$ g( F
                elif [ "0x00000031" == $obj_id ];then% u) i3 j/ k& s5 j/ P% b1 W
                        echo "obj.id = \"0x00000031\" ; obj.value = \"NOCHOOSE\";"
( ^( D# y& t  Y5 ~                elif [ "0x00000035" == $obj_id ];then3 |: m) s$ S" B; I7 v
                        echo "obj.id = \"0x00000035\" ; obj.value = \"\";"" k. N2 P: |: y
                elif [ "0x0000003a" == $obj_id ];then, g# d5 o9 h6 E9 Y) j) ?* b
                        echo "obj.id = \"0x0000003a\" ; obj.value = \"\";"
" l) T6 t3 j$ m: ?- h3 W                else
( C; c# T! @% b4 o, z                        echo -E $line% G4 p/ n, G3 B+ y/ k6 S- |6 ^
                fi
/ I# g5 c8 L2 O7 I3 t% `7 i! |        done  > $var_boardinfo_temp4 O% U1 t: S9 y% X' b

$ @+ b* A9 W) V0 v        mv -f $var_boardinfo_temp $var_boardinfo_file2 g4 T- b) l$ p  N1 x% `( p
! \: F2 ^9 K. s2 x. H0 G& G
        return
2 H6 |/ Q* @, w9 n! k+ N4 n}4 a' Y* {9 W5 s+ i
. ~- w5 n6 r. U% \5 ^8 f
# 刷新boardinfo文件的crc行- a: n, v+ T& _. Z; M9 H' l
HW_Customize_ValidateBoardinfoCRC()
; j* a$ Z/ k! `* @{
; l( U0 \; h/ {( N        if [ -z $1 ]; then
5 E0 o7 h; U7 t, E  m9 t  j                return 0
8 c6 V' V8 I9 Z% ^9 u8 B. V2 [$ y        fi$ G+ w* _; Y) d( C% z
        if [ -x /bin/factparam ]; then
/ z; R& l4 z: ]# O5 y                /bin/factparam -v $1' D8 C& v" p. X0 X
                if [ 0 -ne $? ]; then
4 J0 c; d/ y3 |+ E6 f. i8 U: B                        echo "ERROR::Failed to validate boardinfo crc on $1!") y) a( V( T" t# Q' ?4 S5 o4 C8 {
                        return 1; r) K9 I0 W/ F/ n( a
                fi. ~  J7 x, r! r4 @4 F  o, p$ d- P
        fi! r' `% d+ d# y7 p9 W# @6 G, ]
}) F: T7 W6 v' n/ i( D: @; @

6 N, K" q; y9 s( M( p' X: v# 清除出厂参数备份& U* c( G$ U/ X1 e( k
HW_Customize_ClearFactoryParamsBackup()
9 F* ?/ t# S8 O. h& z8 Y& m0 ]1 t{
0 t" ]" I" d6 L* A  a        if [ -x /bin/factparam ]; then
( U  d  L9 J% \4 z                /bin/factparam -e reserved6 i; G2 C  `1 a- T& ~. c. l8 @
                if [ 0 -ne $? ]; then0 b  [! I& Q) c3 p* T) A" E. X
                        echo "ERROR::Failed to clear factory parameter backup area!"
1 c# c/ C/ {$ k  ?6 F0 O8 A) n                        return 13 E) M# O  B2 |, C: I
                fi
+ t) W3 P) u* R% `( b5 s1 I0 k% ?        fi4 N% \3 Z: B: W' I- V
}5 a3 v. e  ]: H# ~/ G8 k

3 |. V7 ~+ S2 O% o7 n9 Tif [ 0 -ne $# ]; then
3 k9 g1 O6 B9 {6 x# k% X" O- H        echo "ERROR::input para is not right!";% V2 X& y3 L1 B
        exit 1;
4 `# N6 l' U& _: g" A. j: telse+ @- {8 a1 ~& H) O7 U- G
HW_Script_CreateFile' T/ j8 D0 j4 A0 z1 y/ r8 s/ t2 O
[ ! $? == 0 ] && exit 1$ r! i- U$ y' i0 C& Q0 U5 h" l
# \: O0 d4 _1 b8 T  w
HW_Script_RemoveFile
. d  s" k6 i, M5 e, y& ]/ q[ ! $? == 0 ] && exit 1
+ I. K1 g; R* a1 P8 K
8 r) d/ D+ |0 k- c: u; u8 u9 l0 h$ d+ K$ eHW_Script_CopyFile$ ^) h# t5 S) r# g$ w- `
[ ! $? == 0 ] && exit 1
6 A" V+ j' l' M3 N. j
) y5 R, m" G) E4 c+ y6 X5 nHW_Script_SetData
# ~  \. E' g( J6 q) p: X# c. ^5 t[ ! $? == 0 ] && exit 1. l! d5 n! U  A7 ~4 A5 F
+ b" m+ a- Z& E
rm -rf $var_boardinfo_bakfile
- c) ?( \. G! |% F# D! Y/ `! Q. \% c7 K5 }  K7 ?2 F
ctrg_support=`GetFeature HW_SSMP_FEATURE_CTRG`
. M6 n$ Y. R! U2 |% G) B$ t+ ~. wif [ $ctrg_support = 1 ] ;then
. S7 j+ L/ K" H$ {6 D0 ]        dbus-send --system --print-reply --dest=com.ctc.saf1 /com/ctc/saf1 com.ctc.saf1.framework.Restore > /dev/null
  v- }/ L9 [5 N2 afi# [% j. x# p' i  H* H$ n

5 C( I. }6 P$ j7 h# 必须刷新boardinfo文件的crc行,并且清除reserved分区的出厂参数备份
, V7 C9 ?( K, t9 oHW_Customize_ValidateBoardinfoCRC $var_boardinfo_file
" v, v% p& T! q0 b1 V3 K( r[ ! $? == 0 ] && exit 19 E8 E4 q3 Z) c) y/ i: ^
HW_Customize_ClearFactoryParamsBackup
6 e2 d" w& w. y" ^! R& \% r[ ! $? == 0 ] && exit 14 I- \/ k/ ^# ^# N% I
" S: K& g/ d4 ^# L9 Y9 R  F
echo "success!"
: X0 i) R% J1 Y9 ~3 V/ z9 W+ F" |1 x
exit 0# I+ s4 R; a& k
fi0 D8 w$ B2 t  n6 D$ x. D, J, v
- q, z0 X2 v7 r
6 T' o& M! C4 u
--------------------------------------------------
6 l* V7 d' t2 v+ y2 t最后附上脚本下载
! \7 ?& _9 u8 U  o- R$ K* k
; M  u! h4 S5 g5 h' Q& m  b" w

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2018-3-26 11:19:36 | 显示全部楼层
qq519948746 发表于 2018-3-26 01:41
% m0 j8 H$ l9 A2 Y+ n5 f4 A! v4 K5 x2 `请教下你们用什么修改.sh执行脚本。
4 l* @# ]" }( o3 S9 C( ]9 l5 ~我用Notepad++修改 后无法执行  都是添加的简单的命令 rm,tar,cp之 ...
: ~' f( `  }( t; O7 N0 r/ b" _
su1 R0 \! P3 Y9 O3 _$ T5 Y4 {
shell2 r( V+ J  ^- J; T
把权限获取了先
发表于 2018-3-26 00:15:45 | 显示全部楼层
期待高手做出三网自动转换的脚本!
 楼主| 发表于 2018-3-25 21:04:16 | 显示全部楼层
这个是选择三网配置的脚本。一般用来选择电信 移动 连通 界面6 N) x  h+ v$ t+ o2 C; `1 `; ]0 R6 X
-----------------------------* V! _* x1 a& A1 c/ Q
#! /bin/sh
4 y. u5 j% [# C5 F8 b" A$ ]+ k" `! p: w
# 输入参数变量
. [: K5 ]& E1 {2 Z9 Xvar_bin_ft_word=$(echo $1 | tr a-z A-Z)2 y+ E6 ~0 H9 h5 }- m- D! f% l
var_cfg_ft_word_init=$(echo $2 | tr a-z A-Z)
: w' E0 b0 ~4 Jvar_cfg_ft_word_en=$(echo $2 | tr a-z A-Z), m! r' o% g4 o" T# D6 b
var_ssid=$3
. v% W! v5 v* ?+ kvar_wpa=$43 h* x/ l) w& o/ I1 ?
var_input_para=$*0 X3 `( y" a, M3 U6 p7 N
var_is_HGU=1
3 |' A5 I: A2 F) r3 y! ?/ hvar_is_ENBG=0
$ i  e/ v  v/ g1 cvar_para_num=$#
" g6 \, H$ q0 v; D$ d" K/ N! Vvar_customize_telmex=/mnt/jffs2/TelmexCusomizePara4 l0 b+ ^$ n) I$ q
var_jffs2_specsn_file="/mnt/jffs2/customize_specsn"  J- f& w! w4 S8 V$ X

3 \5 @. q- p6 ~: u# 全局的文件变量. p& `0 U% i& D: N# N
var_jffs2_boardinfo_file="/mnt/jffs2/hw_boardinfo"0 C& E/ M1 G2 W' [' e
var_boardinfo_bakfile="/mnt/jffs2/hw_boardinfo.bak"9 o7 n3 @( v2 H! [
var_jffs2_customize_txt_file="/mnt/jffs2/customize.txt"( d3 L3 J$ b( E4 l% h' i9 U+ Q
var_telnet_flag="/mnt/jffs2/ProductLineMode"
5 C- H- H# s8 evar_hw_hardinfo_feature="/mnt/jffs2/hw_hardinfo_feature"
% P- z# P* t9 p, U5 R7 Rvar_hw_hardinfo_feature_back="/mnt/jffs2/hw_hardinfo_feature.bak"4 g. a+ g' b2 r; y% I1 [4 b# F! W

. n' l& `2 ?8 V2 u# p2 d# 其它变量, _+ M2 W. e6 f& W5 R+ t7 D( x
var_pack_temp_dir=/bin/
* R3 t5 x, n: f5 Z+ s6 @rm -rf /var/notsaveboardinfo& \1 R8 L1 l1 j: \/ K3 ?1 V

! s; @- b9 q# g2 _#新增企业网防串货特性,会在配置特征字后添加_ENBG- z7 g6 J" v  y6 U$ e" f% A  x
var_cfg_ft_word_en=`echo $var_cfg_ft_word_init | sed 's/_ENBG$//g'`
+ r' ]1 F! H9 lif [ $var_cfg_ft_word_init != $var_cfg_ft_word_en ];then  m- O3 E% @  c" n
        var_is_ENBG=1( O  v9 D2 h. v2 p$ L+ e" j
fi
- U  u5 ]2 _% S( ]  Q+ {! Y) X1 T. a6 A( U' }" v* k6 \
var_upcase_cfg_ft_word=$(echo $var_cfg_ft_word_en | tr '[a-z]' '[A-Z]')& g' ]& P  U* A: X6 e  i
var_BUCPEkeycfg=$(expr match "$var_upcase_cfg_ft_word" '.*\(BUCPE\).*')
- ~" g9 b9 r% l+ i3 q- N* C! P
4 z8 |! y! |; |9 V#判断配置特征字是否包含:字符,var_cfg_ft_word 和 var_cfgfileword JSCT:8X2X定制 var_cfg_ft_word=JSCT,cfgfileword=8X2X
; [# J3 T2 U0 ~3 c; J/ |$ v#将回显输入到空设备文件
# W, H+ p" i2 ]. e8 wecho $var_cfg_ft_word_en | grep : > /dev/null! \! S9 |, S0 x5 L( G5 Z, ?
if [ $? == 0 ]3 S; H+ `' ?& A) W7 d
then
% E7 x! q) R5 F& b- O: c) x        var_cfg_ft_word=`echo $var_cfg_ft_word_en | tr a-z A-Z | cut -d : -f1 `
9 ~8 O8 a% m6 y4 \" \        var_typeword=`echo $var_cfg_ft_word_en | tr a-z A-Z | cut -d : -f2 `3 ^0 F. Y0 _6 P2 g4 Q3 b
        var_bucpe=`echo $var_cfg_ft_word_en | tr a-z A-Z | cut -d : -f3 `
5 ]$ w6 O9 [8 u; felse
! |+ h- o0 G2 t9 a- d. d4 P        var_cfg_ft_word=`echo $var_cfg_ft_word_en | tr a-z A-Z`
' }) H' p- i+ }3 ]3 l! s9 J) [& ~        var_typeword=""8 C) U9 _( y6 v* E
fi
: m" U1 V' C( ^. r/ e2 ~3 N; g( v$ _# Q* c7 ^. A) Y: f
if [ "$var_typeword" = "BUCPE" ] || [ "$var_cfg_ft_word_en" = "CHOOSE_BUCPE" ] ; then
) d; ^+ H8 V3 X7 G7 c% b& A9 W        if [ -f $var_hw_hardinfo_feature ]
1 |1 q- U- H4 j; Q1 g        then0 A- W8 G* I0 }
                echo 'feature.name="HW_SSMP_FEATURE_GXBMONITOR" feature.enable="1" feature.attribute="0"' >> $var_hw_hardinfo_feature
  B; p) E0 ^5 D. {        else
# A9 @5 ]+ ~8 D9 u1 |8 S# Y                echo 'feature.name="HW_SSMP_FEATURE_GXBMONITOR" feature.enable="1" feature.attribute="0"' > $var_hw_hardinfo_feature7 c6 l4 I" l; @' F( P) ?) ~* b
        fi
/ v  ?/ B* ]. s        # v$ h) o  R; I; F4 |
        cp -rf $var_hw_hardinfo_feature $var_hw_hardinfo_feature_back0 A9 I$ o9 O+ c$ j: L
        var_typeword=""
# x# m' ]+ H8 x5 `/ v7 Efi" Q2 v2 u. y. w( ^, X2 ^2 R
; t+ p' s: z9 a/ _  r5 f
if [ "$var_bucpe" = "BUCPE" ] || [ "$var_BUCPEkeycfg" = "BUCPE" ]; then
, q/ Q( H! \! e! c/ h% d+ z8 i- K        if [ -f $var_hw_hardinfo_feature ]
: S8 n# B2 a1 K        then- Q( A0 n" ^% ^* j( p
                echo 'feature.name="HW_SSMP_FEATURE_GXBMONITOR" feature.enable="1" feature.attribute="0"' >> $var_hw_hardinfo_feature
+ X. ~0 H7 b: M. X- G0 b        else
5 _# ]! h9 d! B/ n                echo 'feature.name="HW_SSMP_FEATURE_GXBMONITOR" feature.enable="1" feature.attribute="0"' > $var_hw_hardinfo_feature
# Y7 Q( Q0 u' b& C' h: a        fi
. N2 L) t. ^) H; ?5 _3 X       
6 f" `# i4 a5 X! `& E( I, h7 ~' }8 ~        cp -rf $var_hw_hardinfo_feature $var_hw_hardinfo_feature_back1 X2 i0 g3 V% l3 b- c2 D
fi3 M9 ^# u) ~: C2 F

5 x. ?  Y6 Z+ Evar_cfg_ft_word_save=`echo $var_cfg_ft_word_init | tr a-z A-Z`# A, W0 R: m' a" W8 [& D7 w# _
var_cfg_ft_word1=$var_cfg_ft_word
% _/ X3 C4 w8 y8 w- w4 X! v7 k0 e+ j
var_cfg_ft_word_choose=$(echo $(echo $var_cfg_ft_word | cut -b -7) | tr a-z A-Z)
; j" C, Q7 b% O' k' e6 N
- Y6 Z) G$ }$ x2 @9 @8 e' ^# bHW_Check_Boardinfo()
4 |3 E& }+ U2 F" a/ i7 i* W1 Q{2 i% m0 a2 y1 z) f; a
        if [ -f $var_jffs2_boardinfo_file ]; then: e5 o8 x* [/ I
                return 0;
, i$ J& Q- T) r! r6 l) I3 t3 w+ I) {, o        else7 P5 h! x- H2 R) T
                echo "ERROR::$var_jffs2_boardinfo_file is not exist!"
* C9 N1 d' j- w+ A. |: j                return 1;
& M- N1 G0 f9 i        fi2 r  a- \) m& A( ?4 t
}
, j3 w9 p9 K" ~
: y" F! g7 k1 f3 V% m7 N8 P5 U) L# 通过cfgtool设置程序特征字和配置特征字,这个操作在装备资源校验完成后执行% H& f' ~! H7 {7 b
HW_Set_Feature_Word(); L1 `; y. |5 W3 D
{
* H" B+ R% m8 H" [; @% Z        #程序特征字的ID为0x0000001a,配置特征字的ID为0x0000001b,
- ]  U) N" z. S, Y# |$ S3 d( ^        #这个是跟DM的代码保持一致的,产品平台存在强耦合,不能随意更改2 _0 j( P' d8 J+ w9 D

9 e, e% ~+ N( q; {3 K1 ]        #判断配置特征字是否以WIFI结尾,如果是则删除
; t3 T3 @& ~5 S6 S' J5 J# l$ y        var_cfg_ft_word_temp=`echo "$var_cfg_ft_word" | sed 's/WIFI$//g'`+ L' _6 _6 ^2 R, T
        if [ "$var_bin_ft_word" = "CMCC" ] && [ "$var_cfg_ft_word_temp" != "CMCC_RMS2" ] ; then0 t8 G1 s/ i- K* E% _# C  K/ g
                var_cfg_ft_word_cmcc="$var_cfg_ft_word_temp". N' H2 ]# g% Z- K
                var_cfg_ft_word_temp=`echo "$var_cfg_ft_word_cmcc" | sed 's/2$//g'`( Y, i: b& _7 u
                ; k* Q; r' Y' l, {
        fi
! ]7 B: @$ c' k# \7 N0 s6 L0 f/ V4 J9 c# r% _4 K, B: B
        #如果是免预配置,电信定制为E8C E8C,联通定制为COMMON UNICOM2 W+ U' F- a4 t2 g6 U5 K
        if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ] ; then
& N' v6 g/ J6 g8 e5 s, D                if [ "$var_bin_ft_word" = "E8C" ] ; then3 z% o9 c; h7 h/ k
                        var_cfg_ft_word_temp="E8C"
6 w- N. H( @5 o                fi5 n' w- L9 u" p
0 W. K* v+ x* o* U: ~
                if [ "$var_bin_ft_word" = "CMCC" ];then
' D' e2 t3 N; u  c. K( ~0 m2 N8 ^                        var_cfg_ft_word_temp="CMCC"
& J1 d. s9 c' u. v! {/ g) E/ y                fi
) p; e* A/ Y+ v4 y               
/ m2 a' w; e+ j( P3 z+ L# V                if [ "$var_bin_ft_word" = "CMCC_RMS" ];then1 i) A1 l9 g8 @
                        var_cfg_ft_word_temp="CMCC_RMS"
4 \! @- F0 H8 z. h' c                fi( b; t+ m" ?6 c" b" \+ v' J
               
9 A* I) y7 Z' p. I2 O$ o% O                if [ "$var_bin_ft_word" = "BZTLF2" ];then1 ?- R+ H% B/ l1 z
                        var_cfg_ft_word_temp="BZTLF2"
* N' J* ]' y/ u2 ^" E' N                fi% Z7 l9 g- a" U7 L% r2 G

/ e0 H/ g0 _' ]$ s                if [ "$var_cfg_ft_word" = "CHOOSE_UNICOMBRI" ];then
2 n1 m* F4 c; h& s% U+ M5 l                        var_cfg_ft_word_temp="UNICOMBRI"
8 O6 W- k+ g! U/ F& a' d                fi4 w6 `) @7 u8 e2 I4 t
        fi
' c  ]  [" B+ ^. E) n( D9 K- N* U7 Q       
: _- C7 o1 x. X, {        if [ "$var_cfg_ft_word_temp" = "CMCC_RMS2" ] ; then
4 t: p1 i" {" ?' j7 G+ W7 Q                var_cfg_ft_word_temp="CMCC_RMS"
' S5 i7 p; D$ _1 A        fi) ]. x7 \5 u" q1 u

. I# I7 @0 q; Z8 {4 a; C1 `        #检查boardinfo是否存在
3 E8 v  B" i- p$ I1 ^- z        HW_Check_Boardinfo1 A  N9 d/ Z7 B; Q
        if [ ! $? == 0 ]) A& W* g* I; m+ y6 _& ?
        then6 C# @0 W& n% j3 R
                echo "ERROR::Failed to Check Boardinfo!"
, Q0 R* q& U* v6 ~! u5 H/ ]                return 1
4 t# Y! @  W2 }/ E* A7 v& M) h- u        fi
- A3 l/ ]1 n: \# f% e& _0 P( j% j+ e8 R" U# C+ l
        echo $var_jffs2_boardinfo_file | xargs sed 's/obj.id = \"0x0000001a\" ; obj.value = \"[a-zA-Z0-9_]*\"/obj.id = \"0x0000001a\" ; obj.value = \"'$var_bin_ft_word'\"/g' -i
# Y5 x2 ?) e# x: w, U) Z) z6 Y* N2 P% n8 _
        echo $var_jffs2_boardinfo_file | xargs sed 's/obj.id = \"0x0000001b\" ; obj.value = \"[a-zA-Z0-9_]*\"/obj.id = \"0x0000001b\" ; obj.value = \"'$var_cfg_ft_word_temp'\"/g' -i
2 Y1 \0 }2 ]7 v, Z+ ^5 f8 I: R# H  ], S
        #根据配置特征字后是否带_ENBG判断其是否为企业网ONT,企业网为@EN#Common&,其它运营商为@CN#Common&
$ \0 N, ]  {9 k! J" j+ M        if [ 1 == $var_is_ENBG ];then
& ^2 ]) k, l: E: U                echo $var_jffs2_boardinfo_file | xargs sed 's/^obj.id = \"0x0000003a\".*$/obj.id = \"0x0000003a\" ; obj.value = \"\@EN\#Common\&\"/g' -i. }  J- r& f+ j4 t$ ?/ v8 m
        else( ~: ]9 Q# m+ o( m, Q4 _+ I
                echo $var_jffs2_boardinfo_file | xargs sed 's/^obj.id = \"0x0000003a\".*$/obj.id = \"0x0000003a\" ; obj.value = \"\@CN\#Common\&\"/g' -i2 Q& T+ m" ?, P$ O" P- D
        fi9 D4 @( \1 z* F" B5 y, V6 M
        $ C+ ?" E* @. z! ?% q2 f! T3 `0 ^
        #保存程序特征字和配置特征字到文件/mnt/jffs2/customize.txt,getcustomize.sh从这个文件中读取,为了保证boardinfo能够完全写入,需要放在最后面
6 |  S* e3 F) ~+ l        echo $var_bin_ft_word $var_cfg_ft_word_save > $var_jffs2_customize_txt_file
7 h* J$ q) D6 _}! {0 E$ t. c' W, u# W
  ?8 l5 u" M2 x7 ~
#设置typeword字段
7 I7 H  S' b. W0 fHW_Customize_Set_CFGTypeFile()1 t, c7 Y/ U8 |% A4 X
{, ~8 U, S( t4 U7 [" X; C
        #后面会进行检查,再次不检查boardinfo是否存在
2 C: x" S; Q  u1 i, q2 x. n        echo $var_jffs2_boardinfo_file | xargs sed 's/obj.id = \"0x00000035\" ; obj.value = \"[a-zA-Z0-9_]*\"/obj.id = \"0x00000035\" ; obj.value = \"'$1'\"/g' -i
" W" _5 k3 r1 n* E9 S. Z3 ]+ c        return 0% e8 Z3 Q! A* t
}7 `- u) h9 U+ `  j7 c

' |: ]; n1 O+ W9 [. C#设置cfg fileword
; q' ]  K# Y/ ~0 DHW_Set_CfgFile_Word()* G# [- h% |+ `/ h* X" }# J1 T
{2 G/ p$ N, {; w4 N1 S
        if [ -z "$var_typeword" ]
+ Y  s: i) e9 r& g        then
. }  ^2 K% o. |" w. g) j5 y                HW_Customize_Set_CFGTypeFile ""
! T+ |2 N, _8 t# p+ Q                #不带typeword,删去typeword文件(之前定制的typeword)+ ^7 s: z1 V3 n/ R# j0 e( `/ H
                rm -f /mnt/jffs2/typeword
( Z7 k$ Z( R5 \        else( y$ v9 F/ O" [
                HW_Customize_Set_CFGTypeFile "$var_typeword"
7 U% z3 Y0 ]' M& C        fi
8 D  E; q7 ?: u3 ^        return 0
( m& H$ s6 t( W$ ~$ x}$ y' T5 U( H/ M
( C, h! C% T# Y$ w/ K0 a6 h
# 参数检测- w" V( |. v* e. f( ]2 N
HW_Customize_Check_Arg()
: f* Z. p7 @6 t: z) K{- l; `% B4 C' d8 ~- M
        if [ -z "$var_bin_ft_word" ] || [ -z "$var_cfg_ft_word" ]- ~" j7 }5 L: t7 V8 s
        then
( \- \, L8 L2 n' S' T                echo "ERROR::The binfeature word and cfgword should not be null!"
3 L1 a9 F2 K* S: C                return 1; M7 ~! z/ F" I- b4 [3 K$ {
        fi
5 z( l2 [; h6 d; C+ {7 |7 V
5 w3 Y( g0 n5 [: A  C        return 0
$ C( }# t# }, Z5 d9 t) O}" N% o* v! S" w( }5 R
0 v- ~6 x; M9 n# [9 A9 D$ w
# 如果是COMMON_WIFI ~COMMON定制,则将BinWord由COMMON_WIFI->COMMON,依然走定制流程* J/ {9 }4 V! W: g& I6 D$ {
# 如果CfgWord以wifi结尾,则去掉"wifi"字符串: @3 O% m3 l8 n5 ^& T- t& Q
HW_Change_Customize_Parameter()6 L0 h5 X8 x4 H+ f
{  M. W  T5 P" x9 ?0 q5 m
        if [ "$var_bin_ft_word" = "COMMON_WIFI" ] ; then  F2 h5 z) I: K# y$ V" Z
        {
2 S: P6 C" A0 ?0 c( f- l) g                var_bin_ft_word="COMMON", y3 @& V, o9 y
        }' q0 X1 |. ?% Z. A
        fi1 C3 d' |% M. ]. _8 s) R
8 Q% F2 ?! l4 C% Z, f) ^
        #判断配置特征字是否以WIFI结尾,如果是则删除
8 A0 W" H! e' ^- q0 [) w        var_cfg_ft_word_temp=`echo "$var_cfg_ft_word" | sed 's/WIFI$//g'`2 J: Z* T7 a( K: A. r
        if [ "$var_bin_ft_word" = "CMCC" ] && [ "$var_cfg_ft_word_temp" != "CMCC_RMS2" ] ; then$ U) ?) I. O; ^1 {. A3 a  Q
                var_cfg_ft_word_cmcc="$var_cfg_ft_word_temp"; `6 g1 Z5 E( r. f3 t( R
                var_cfg_ft_word_temp=`echo "$var_cfg_ft_word_cmcc" | sed 's/2$//g'`
5 b; q* n4 {* @) v/ v4 S               
: U2 b0 L  G+ ]7 I8 B; h        fi
2 o  F3 G7 ], r       
( _. t( _5 d( t6 T) t; t. E, Y' G
' H# Q# x$ Y, l        shift 2  P" ?- T. L. |# t

8 ~# ^) p" l5 H9 `2 h' a6 T        var_input_para="$var_bin_ft_word ""$var_cfg_ft_word_temp ""$*"  c3 O8 o3 n! Q3 ?( V
6 \4 q7 B8 k  K& G2 `" l4 c
        return 0) ~$ \) B* A5 _- O; U3 h$ h# B, U
}! V8 _' \9 k, H5 j% Q

* G2 H' \7 R4 }& F7 |. [" w2 S; [8 `# 如果CfgWord中去掉_SIP或者_H248字符1 u3 c! v+ w: f0 }8 C- R+ \
HW_Change_Customize_ParameterForVspa()0 u8 F4 b. `" G! W' {" \
{* |' H% V9 N6 L
        #如果配置特征字中没有_SIP或者_H248则直接返回,不显示1 e. |+ s, |, Y. f! _) }
        echo $var_cfg_ft_word | grep -iE "_SIP|_H248" > /dev/null
1 P. t5 E) b% K        if [ ! $? == 0 ]
/ l. `! C2 e/ m  X6 G3 L8 w        then
# i( d, p9 W4 G- R% |) q6 a                return 0! A- e* F/ n0 J0 [
        fi
5 e2 i  A* _% u3 a2 d* J
  b8 A7 l5 I9 q2 J/ E- |        #删除配置特征字中去掉'_'后字符,并重新构造配置参数,作为Customize程序的参数
  c1 A) Y/ t4 }* [% J9 O        var_cfg_ft_word_temp=`echo "$var_cfg_ft_word" | sed 's/_.*//g'`6 L* @- k9 q: g  A8 P0 v2 P
        shift 2  #输入参数左移动2个
- f+ p" X5 W4 u, s9 b        var_input_para="$var_bin_ft_word ""$var_cfg_ft_word_temp ""$*"7 l+ ?$ {( G# l% f
        return 0! k! u+ o! C2 a5 r4 t, _. Y% w$ ]$ M
}: N& j+ K! j8 L. U
9 G0 M( f  a; A/ Z8 x% D
#设置CHOOSE字段3 R" r/ C: @/ x5 i0 S  @
HW_Customize_Set_Choose()9 W9 r) z0 L5 V" s# |2 h5 x: S8 ^' Q
{
9 f" ^4 W2 p0 S. {0 b& ~        #后面会进行检查,再次不检查boardinfo是否存在( q% G: G$ U. l, y. u6 L
        echo $var_jffs2_boardinfo_file | xargs sed 's/obj.id = \"0x00000031\" ; obj.value = \"[a-zA-Z0-9_]*\"/obj.id = \"0x00000031\" ; obj.value = \"'$1'\"/g' -i# ]9 J0 k$ u  a+ X7 e7 n& a
        return 0. t6 ~. D; Z& f& w( s3 V5 }
}5 P( c4 S/ L% K
+ X  b0 Y' u$ V7 N# m3 k( W( g
# 资源检测
3 n- w; u: Z. Y$ M8 {9 y4 uHW_Customize_Check_Resource()
3 L- G# c1 H% E8 I) w$ l! m2 o/ a{* a) O+ k/ |5 r
        #HGU需要关注免预配置定制,需要涉及CHOOSE_WORD字段修改,SFU则可以直接传入  c. b% {0 Q& x: m% @9 [2 ]8 t
        if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ] \) {7 g- \( K+ a" \' S8 x4 L
        || [ "$var_cfg_ft_word" = "UNICOM" ] \1 @6 S4 O6 H. H) D/ c3 d; i
        || [ "$var_cfg_ft_word" = "UNICOM_BUCPE" ] \
6 Y/ v  ?4 A  R; w4 C1 E9 t/ @0 e        || [ "$var_cfg_ft_word" = "UNICOMBRIDGE" ] \
5 j( q% U' G# p, |. U5 U' c        || [ "$var_cfg_ft_word" = "BZTLF2" ] \& O! O6 `  Q$ _. G7 F- m; ]
        || [ "$var_cfg_ft_word" = "BZTLF2WIFI" ] \
6 }' t' i( x5 O" r        || [ "$var_cfg_ft_word" = "CMCC" ] \
) Y9 y, W! N0 ~7 V6 M7 `$ G        || [ "$var_cfg_ft_word" = "CMCC_BUCPE" ] \
  R' c6 \3 X* v* G        || [ "$var_cfg_ft_word" = "CMCCWIFI" ] \7 D. R/ V3 Y. U/ N5 Q
        || [ "$var_cfg_ft_word" = "CMCC_RMS" ] \
2 \  R0 W& k4 L5 n8 x        || [ "$var_cfg_ft_word" = "CMCC_RMS2" ]  \5 B& M8 ]$ ^; s: ?, o; `* O- I  p  p
        || [ "$var_cfg_ft_word" = "CMCC_RMS2WIFI" ]  \
( r: e, R+ R2 {' ?* P! S0 Q        || [ "$var_cfg_ft_word" = "CMCC_RMSWIFI" ] \
% [4 s+ B+ j; T" r        || [ "$var_cfg_ft_word" = "CMCC_RMSBRIDGE" ]; then9 R' E& ]4 e! F  q  ]
                shift 2
) p2 W) A4 y1 |& r                if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ]; then; Y5 I' ~+ |+ b" V5 Y
                        var_input_para="$var_bin_ft_word ""$var_cfg_ft_word1 ""$*"
$ R- a! l) W( ^9 f  B* v* I( x                elif [ "$var_cfg_ft_word" = "CMCCWIFI" ]; then8 j4 [( H7 b0 l6 U: c  r! R9 i
                        var_input_para="$var_bin_ft_word ""CHOOSE_CMCC ""$*"        4 e: z5 a, a0 Y; |) u
                elif [ "$var_cfg_ft_word" = "CMCC_RMS2WIFI" ]; then# K* x  r, ~7 s
                        var_input_para="$var_bin_ft_word ""CHOOSE_CMCC_RMS2 ""$*"; U, X7 P+ f/ Y( k, r" l
                elif [ "$var_cfg_ft_word" = "CMCC_RMSWIFI" ]; then
$ m/ i# f! t& M- V$ `                        var_input_para="$var_bin_ft_word ""CHOOSE_CMCC_RMS ""$*"
& h3 d3 @0 b- }: L4 v+ e4 b                elif [ "$var_cfg_ft_word" = "BZTLF2WIFI" ]; then4 p4 h9 ]+ _  d4 x
                        var_input_para="$var_bin_ft_word ""CHOOSE_BZTLF2 ""$*"( C: R8 {( Q6 F5 Z5 @
                else
' i! J0 t( y. @: r) ?; k2 e                        if [ $var_is_HGU -eq 1 ] ; then
% \& I$ ~& M' u3 }4 O5 A                        var_input_para="$var_bin_ft_word ""CHOOSE_$var_cfg_ft_word1 ""$*"- ?, f( g+ W, P' Y/ N" i0 [
                        else5 M# D+ f; u, ^9 P/ J
                                var_input_para="$var_bin_ft_word ""$var_cfg_ft_word1 ""$*"
4 K; d# P2 h' P! D                        fi( U5 P7 V; l$ ^* U. N  l4 ]) b
                fi. b% z  b- Z: _! p
        fi/ [& H' ?6 S! X" B* F2 v

6 J4 E5 u( t2 F7 `" t' H" g        #现在TELMEX只支持12个参数(customize.sh后面的),格式如下:7 L2 y, Z9 b& x/ \. a8 O% P
        #customize.sh COMMON TELMEX SSID WEP_KEY PPPoE_user PPPoE_pwd TR069_user TR069_pwd WEB_pwd CLI_user CLI_pwd  WPA_pwd
1 {: V9 M: |" D2 @2 x8 O        if [ $var_cfg_ft_word == "TELMEX" ]
7 e' l, a4 Z/ S' _4 v7 l+ m. K0 `        then3 q' ]2 P* s- P% K! g$ `& |
                #对于之前的已经用5个参数定制的整机,返工场景(重新定制,要删除该文件,否则定制检查会失败)
3 s# i1 \, t7 u. N# \0 l                if [ -f $var_customize_telmex ]; _+ X" ]. N( s1 d* s& }+ O
                then+ u/ I+ F( n) `; T
                        rm -rf $var_customize_telmex0 D, g- y& c( h* A
                fi. g3 _9 h6 o; w9 C$ v
                #只支持12个参数(除customize.sh以外的其他参数)
7 g/ L1 V0 {' k7 J  Y. p                if [ 12 -ne $var_para_num ]4 l  b" N3 Q4 o7 j( B; K
                then2 O( T* p. O% Z% y# U
                        echo "ERROR::input para must be COMMON TELMEX SSID WEP_KEY PPPoE_user PPPoE_pwd TR069_user TR069_pwd WEB_pwd CLI_user CLI_pwd  WPA_pwd !"
  |' n6 j+ g; N# m0 ]                        return 1* v9 Z% S  n9 H8 u3 _* w8 H6 p9 l
                fi
+ T7 ]4 P$ J+ \$ H0 n        fi
4 s7 W9 X) J) H! C3 |% C' ^9 N1 H
, I2 H; Z% o& D- w        # 调用Customize进程进行装备资源的校验, 把文件暂时写入typeword 暂时写入/mnt/jffs2/typeword 文件。 如果不通过文件传递,通过argv 传递" U/ k: K' [1 q
        # 需要函数扩展的函数有十个左右,且在Customize APP 中需要扩展解析该字段。
: p% H( X" p, m        if [ -f /mnt/jffs2/typeword ]; then
3 S6 x' ]. q- Z) F                cp -f /mnt/jffs2/typeword /mnt/jffs2/typeword_bak
4 R+ N* M2 N. Y+ s: Y, ]        fi
( g+ A5 f, v9 Y& N3 ?  l* B3 U( D        echo $var_typeword > /mnt/jffs2/typeword3 W- b4 U/ W. \
        2 v- z) I! h. S$ t$ J9 f" Z# [) F
        #检测是是否在生产过程中写入specsn文件,重新返工需要将此文件删除。$ S2 i/ \/ s& `7 s: w2 F
        if [ -f $var_jffs2_specsn_file ]
7 M! g$ N- P5 j- d- {$ m$ u) |        then
) Q6 b' @% F; u+ G                rm -rf $var_jffs2_specsn_file; |# B: R, |8 b; V4 Z+ q
        fi* L+ z4 H, p8 E9 ?" b) y

0 V$ B4 C- v( B6 B; d( N+ K        if [ ! -f /var/customize_flag ]        ;then
( R: ~) Q7 T* v! }, u" [                echo > /var/customize_flag$ R5 O5 ]- Y( Z& `. B9 U
        fi
# ?9 d/ c. A" A. }* j        Customize $var_input_para
2 S$ e( w% Y  c0 i) X) C: t" }- X7 E
        var_result=$?
7 n. Z  f& `$ [0 i! q; G- C' X+ i: r6 ]  l$ I4 P
        if [ 0 -eq $var_result ]: \0 r& z9 \- l. ~" `
        then
+ {/ ?, U1 \! t) n                #写boardinfo和文件1 T' q, @* b( ?7 p/ |' t
                HW_Set_CfgFile_Word
  S" w+ k6 X( {7 m5 o0 G                rm -f /mnt/jffs2/typeword_bak
2 }( P0 M+ }. n" {3 J3 W+ j6 q/ L        else+ Y7 X, H# k1 B" \
                #定制失败, 如果存在备份文件,还原备份0 ]* y/ ?& ~: H3 E' V
                if [ -f /mnt/jffs2/typeword_bak ]; then
0 B4 D! @/ v% Y2 L. o# L                        mv -f /mnt/jffs2/typeword_bak /mnt/jffs2/typeword
5 m* ]' Q1 ]0 z4 p+ `/ o3 d. a7 U0 r                else' g7 O7 w1 L4 B: f# W
                        #第一次定制失败6 V1 d2 e3 g- b  K' i6 {! X; l" o
                        rm -f /mnt/jffs2/typeword
% t1 L, K+ D2 B                fi                ; r6 I" C1 U1 |% |* V% k
                7 }; }2 |9 M- a3 q; V; Y3 b
                if [ -f /mnt/jffs2/customizepara.txt ] ; then5 |7 P* O, Q6 E/ q
                        rm -f /mnt/jffs2/customizepara.txt7 i, s; f! C8 H/ I4 _/ F
                fi" N' i& T1 V0 V4 o; P  p7 v* Z- V- ]8 H
               
# e3 ^2 W6 ~8 Y" Z3 r        fi& A$ d! Y/ T5 A1 i$ J  O5 v) ~/ \# x
* S; O7 q( s2 O2 W, B
        return 0; b8 R: J* d5 l8 _8 T  T# A5 V5 x& K
}
0 X5 G& F! x( C4 ^8 i1 G; |( e5 o) J; M2 ^. z
HW_Customize_Check_PCCWMacCheck()- R5 x) h1 e' S
{5 R9 V0 a$ Q8 K) M$ i
        # 如果是PCCW,需要进行WLAN MAC的校验4 `9 h7 K2 ]& N1 W  y2 c% z: K! Z
        if [ "$var_cfg_ft_word" = "PCCW3MAC" ] || [ "$var_cfg_ft_word" = "PCCW3MACWIFI" ] \1 Q1 v! z0 j5 B& [4 A5 Z* a
          || [ "$var_cfg_ft_word" = "PCCW4MAC" ] || [ "$var_cfg_ft_word" = "PCCW4MACWIFI" ], e; U2 b0 [. [
        then" N1 U% r0 G0 c6 b! Z% r
                pccwmaccheck $var_input_para
  \4 O' j, k8 q' j) C" a% d9 Q                var_pccwresult=$?
4 |( Q0 r' V& X) H3 E' Y& a        else, A, W# w1 |& ?3 o) c& t# o- p
                var_pccwresult=0
9 g  D6 h" y6 w& g* U        fi% B' S6 u4 C* M! Q

; a4 L: ~2 s, b, d5 u' Q  ~0 I' H        return 0* D, o5 ^+ _1 D& }1 d7 [% [% m
}$ s5 E) z" o( ?' b
" J$ a: D3 {1 {; C  h: K
#定制处理$ T0 ?" j; p, L' C- I+ Z0 `
HW_Customize_Delete_File()
7 m! A8 L% B; e, ?$ |7 _{, i+ }1 J. R; ]/ j/ i
        rm -f $var_telnet_flag
9 T/ w% i! I" w2 o. z        rm -f $var_boardinfo_bakfile6 E& B1 J& |+ B( a, _, o" B
        rm -f /mnt/jffs2/smooth_finish' t: t8 }8 K* v* u9 F: b0 h" \
        return 0
: f6 I; x% r4 G8 D# {! z* _}2 w, t& l, Q$ v6 c5 t5 y: V3 o. C6 g

1 Q: u3 }; p/ }( v$ I! [& L# 结果输出
. Q1 w- T: I  l4 P# V8 n5 ], jHW_Customize_Print_Result()
5 e5 H; g$ B; Y  C- V9 q{$ o5 ?" d/ @8 J! N5 h
        # 根据不同的执行结果,返回不同的错误内容% y7 {2 J. D7 r2 O8 S5 x
        if [ 0 -eq $var_result ]" s# e; W% z- _
        then
& t, v! L- D! J  |& t                #pccw3mac pccw4mac定制中需进行wlanmac的校验
: g4 R' z% Q. X8 Z) k9 Q) M                HW_Customize_Check_PCCWMacCheck $var_input_para
3 A0 l& V9 }1 g$ G* R9 T                if [ 0 -eq $var_pccwresult ]
9 [  C# t0 u4 c  `: L4 y( W                then! d/ p+ a/ n; k& H, K$ ~
                        HW_Set_Feature_Word0 Z9 r- S5 l+ ]* O
                        if [ ! $? == 0 ]" D# ], j$ G( @9 e1 ?) ?" ^
                        then
9 c3 D( X: O( Q                                echo "ERROR::Failed to set Feature Word!"4 a: w3 F: O: v# f  m
                        return 19 K2 J# c3 ^9 R, H
                fi2 F7 D7 x% o' Q2 r, ^7 r& e
                elif [ 1 -eq $var_pccwresult ]/ T& m4 u4 U; m$ n* g" j
                then
0 P3 T, `, u, F& d                echo "ERROR::input para number is not enough!"
" z/ d: ?5 }( w0 T3 W# ?                return 1
+ U! N+ k) x6 ?                elif [ 2 -eq $var_pccwresult ]0 y: N+ V3 v* p
                then
3 l% u$ Y. M7 o/ p/ J8 U                echo "ERROR::SSIDMAC fail!"
! w; k" H. ^9 i! o4 Y. O/ m/ K                return 1( B7 K$ n- S, U! F+ e# U5 ?
                else- Q( D4 X& ^6 u/ N
                echo "ERROR::customize fail!"
1 j+ O/ Q. X5 h( k/ n                return 1
$ u% F5 h  j) I* O4 B) q, [                fi
5 ]$ ~' k% }) h4 N. ~9 ~2 L. p$ w                return 0
8 ?: U% H' T& S9 i3 f        elif [ 1 -eq $var_result ]% E8 T4 F$ R) A5 `4 t. P* j
        then
& M3 n+ D7 H5 L' M+ X                echo "ERROR::input para number is not enough!"" E+ E0 v; L# T: M) F% ?, ^1 R
                return 1
" G8 F" o+ Z: ?& X, J        elif [ 2 -eq $var_result ]
* ?. K' e( ^8 y8 h6 y$ g9 S7 c        then
5 G+ ?* E& z- v  R% |5 }                echo "ERROR::Updateflag file is not existed!"
% x$ D1 s+ h- y                return 1. G- S4 d0 y# s+ L' S' T9 X7 {
        elif [ 3 -eq $var_result ]
/ x* j, w/ [' v9 K* I# P& Q& _% w        then
0 A! v7 L8 |3 ?" c/ ?, w7 S# B                echo "ERROR::config tar file is not existed!"; X+ P4 ]3 R0 t- o
                return 1) s! y8 D# `3 E) Z  [
        elif [ 4 -eq $var_result ]9 z5 E' U+ s) h
        then( {1 z: g- T5 I% z" j
                echo "ERROR::Null pointer!!"8 }+ C* a( t( y! M
                return 1
; R- r' s1 q- T( Q. b6 [        elif [ 5 -eq $var_result ]) ^2 K# P( K! r, S8 E$ |
        then  @- U" q+ B% `) J0 |9 p
                echo "ERROR::XML parse fail!!"
+ ~7 O7 j$ L) ?7 D8 T% y                return 13 h4 {/ L/ a$ G2 Q% U
        elif [ 6 -eq $var_result ]6 G+ F& z# Z, j  P. S  V1 w( R
        then/ Q9 S6 [- m5 x
                echo "ERROR::XML get node or attribute fail!"4 Q4 a, [7 ?7 B$ b
                return 1
& y/ x  u3 f- K" P$ x( V        elif [ 7 -eq $var_result ]
7 T4 h+ S2 I( p8 n        then
9 H' k4 F1 X0 L3 k                echo "ERROR::XML get relation node fail!"! M. S; Q  V$ A8 x
                return 1
! H" ?* k) H9 h( E* p2 y        elif [ 8 -eq $var_result ], ^& W7 `, f$ a: G! X& C. l
        then
7 ~8 m  A, l+ F7 e- o" h# C# {                echo "ERROR::Spec file is not existed!"
, a6 S$ W. J: [                return 1$ g$ D9 X2 u5 g8 q  i3 Y# R1 q  C
        elif [ 9 -eq $var_result ]
8 b$ G' l: d( e7 c) M        then
. @& i3 s3 C3 ?& j$ A9 U                echo "ERROR::Set bin word fail!", r) M# l6 V# F6 ?5 r4 u3 X
                return 18 M& @% `) b6 b
        elif [ 10 -eq $var_result ]
, R9 p4 O% Y2 m) J5 |        then
$ S; s: U& \3 L* d                echo "ERROR::Set config word fail!"+ a& y7 x9 B( ?, L
                return 1
$ p* }) U" Z  x! t( {& y5 c0 i4 S        elif [ 11 -eq $var_result ]8 u- @! Z- B1 a% h5 Q0 O7 O
        then0 s: v4 P! S; ?: T6 Z- b* {) }" n
                echo "ERROR::Uncompress tar fail!"7 i4 O* K& W5 T6 l) R* y1 A
                return 1
9 C+ f- b; b# i; V0 b2 K3 o' Z8 t        elif [ 12 -eq $var_result ]" A$ I8 k' Z6 ~5 x7 e
        then
3 D$ n) q. Y0 \6 q' I                echo "ERROR::Config file is not existed!". A3 }) L( c" {( L. M
                return 12 l; u2 k$ T: G8 R2 R; @  T- e! G
        elif [ 13 -eq $var_result ]$ t' O& _; p. J( `" K
        then
+ n" u$ g4 F, W" D' T                echo "ERROR::Recover file is ont existed!") L) p- ]$ P5 h5 f! n
                return 12 p, O6 b1 [0 ]' g. c2 G
        elif [ 14 -eq $var_result ]
& a) M3 C* l' F2 P$ ?  |. ]        then
$ E! ], u; l) n& Y- C1 j                echo "ERROR::Run script fail!"$ f, O% c$ s! }$ W; h
                return 1
' S% l3 w" Y" S: b        elif [ 15 -eq $var_result ]+ i+ T" A  x& J- S
        then
+ f. q# C/ Y" t9 F  F  K                echo "ERROR::Create new recover config file fail!"
* F1 d! `6 e* F% `: z                return 1, N- o9 b' R. @& _0 k6 Q% V" l
        elif [ 16 -eq $var_result ]
, E. @" C( S7 B0 r8 b* Y$ Q        then8 f; W( G! G" d' Z( z' F% n7 d% a
                echo "ERROR::Create old recover config file fail!"7 o) O- ~! B: b5 s
                return 11 i3 M! h, e6 j0 j, x/ X7 a
        elif [ 17 -eq $var_result ]' i: R$ ~9 L! ~$ ]7 P
        then# d8 h7 q& k, m5 i& }. i, Q" B
                echo "ERROR::Copy spec default ctree fail!"
0 e5 x4 @- ], j+ s& V( a                return 1
( }( D# t# X- b+ x* Z; s( Z% V        elif [ 18 -eq $var_result ]
/ i) R3 u/ g. J0 ~/ T- D7 k        then3 ]" C6 g& {/ F2 Y; s; F, ?
                echo "ERROR::Check Choose Res fail!"' ]& K9 m: q4 g( G
                return 1
, P5 e; K/ A% J4 S$ w6 b        elif [ 19 -eq $var_result ]( ^# V7 O# s! h
        then
7 k- |$ s* L6 I' F. _4 Y# f                echo "ERROR::Resolver customize file fail!"4 \' _6 M; C2 Q" a
                return 1
* J: V/ U+ m9 u* Y3 B4 y. `        else
# x. ~3 B0 {* g- }                echo "ERROR::customize fail!"
9 K. |' s/ c& _5 @% U                return 1! m6 v( T. f; K8 x! W# l
        fi8 I) Y! E$ n# D# g' z# a1 x: s) {

7 h8 u8 F, P1 X        return 06 Z$ e) @+ _( _# P8 K
}1 o& y5 M* J  Z' X6 R9 V! X

. g  e. K) ?$ W8 t5 u" ~. ?#HGU才支持免预配置,在此做判断
' U9 w0 I0 J1 `2 O  g1 AHW_Customize_CheckIsHGU()0 U4 m: U' e) F; A4 x7 W& Q
{/ ?& |: k4 `( N% _: [! d
        cat /proc/wap_proc/pd_static_attr | grep -w pdt_type | grep HGU > /dev/null
0 V0 f7 _. V: ]/ z7 b/ g6 o        if [ $? -eq 0 ] ; then
4 ?5 n$ a& c$ O3 u6 N                return 1
4 m  U5 J, I/ i        fi
% E& E) \! C4 I- o9 g4 g0 @: q% Z0 N3 a. m& g& V4 n3 c
        return 0+ T1 ~/ \7 l# `( |! s
}
4 B8 }- z$ ]" v  s2 |
% x# V4 ]5 S2 k5 V1 ^; L- K#Java进程占用CPU过高,导致定制超时
0 X5 U+ G$ ]/ S0 DHW_Customize_ReleaseResource()
( J6 S0 {/ h9 N{) @, T6 u' z0 `% w- \5 u5 q8 [4 D
        procid="";
+ n4 R8 g4 b% _: e9 {! b9 w. Q        ! U3 `1 u) k, |$ P4 W0 p! k
        if [ -f /bin/osgi_proxy ] ; then6 F0 O. F: D  m) U5 R* ?; y
                echo > /var/kill_java4 \) d! b+ M8 c* Q' e3 c
                5 Q" v  n, I8 x! ^$ X
                procid=`pidof procmonitor`   ) S8 r# L2 Q, P: q: F
                if [ "$procid" != "" ] ; then
- Z5 j/ T; T0 q2 M" U5 ?! a                        kill -15 $procid                        ; s, r7 l; W/ m2 Z0 L1 s* C
                fi# l. B% ]( q; R( d: F: d) y9 j5 i  W
# ~7 X0 i$ A. {. \- [
                procid=`pidof osgi_proxy`                    
5 a; P2 \# b3 n7 a, S: N* c                if [ "$procid" != "" ] ; then$ K9 }: s+ G2 b' w1 w5 i7 m
                        kill -9 $procid! x8 Q" Y$ b0 ?& G
                fi       
/ ?8 t6 _. ?2 N               
* S: s5 v. b! F6 p3 E                procid=`pidof java`4 k" F9 W: L, q" `1 S* x# L
                if [ "$procid" != "" ] ; then
2 U9 @7 S; p$ q% h' X                        kill -9 $procid
9 Q2 L$ [' ?% }' F                fi                                                               
2 N! N8 a. h  a1 N1 R* g        fi
( S+ U7 x9 m0 Q  @6 Q% m$ P1 _- U}2 S8 Q9 D% x9 q8 k4 T) }
8 `2 o( x6 u# P4 h( Z

2 M5 L+ |' i! t+ y% j#echo /proc/pdt_proc/save_boardinfo to save boardinfo for add chooseid
9 d8 e4 U+ r2 {& Mecho "1" >  /proc/pdt_proc/save_boardinfo3 D, s: G6 j( U9 S1 }5 K( k
; X) b& X9 S8 o; s7 i
#参数检测:至少应该包含BinWord&SpecWord# V8 b- x: p8 p
HW_Customize_Check_Arg
, |8 s: W7 r' O  r) G[ ! $? == 0 ] && exit 13 q8 R0 |7 ^9 O6 K
$ G, q. e$ H% {# L
HW_Customize_ReleaseResource
+ ]5 T- ~8 C* ?6 V4 L: s2 W! N4 ]7 v
, o/ A6 I+ C" y#参数处理
( P3 `8 K$ f' P0 V& E3 D, DHW_Change_Customize_Parameter $var_input_para
0 N( z. i1 ^3 I& J1 a) }; p
6 N4 _: E$ R' q#参数处理,主要是将配置特征字中的_SIP和_H248进行过滤& H+ ~# z* N; t; j- k% U. h/ t) p
HW_Change_Customize_ParameterForVspa $var_input_para. b) c4 V+ T2 O! A4 d. h! d1 n

" d* x5 Z" d6 n) h, N% i0 [#HGU才可以免预配置定制,免预配置定制才涉及CHOOSE_WORD的处理
  P1 w! J. f: Z1 A; iHW_Customize_CheckIsHGU" w: K5 n( d# ]
if [ $? -eq 0 ] ; then* W* q, t& s5 r* n: i7 b
        var_is_HGU=0
: }" v# l: M" A# _4 wfi
! A# S5 {2 D$ g9 H. |1 X$ |" r  _( H* H
#免预配置模式,添加NOCHOOSE字段,并初始化为CHOOSE_XXX
" @: P6 ]) |6 T% J$ G9 Lif [ "$var_cfg_ft_word_choose" = "CHOOSE_" ] \
/ q4 w, S2 j. R  @|| [ "$var_cfg_ft_word" = "UNICOM" ] \( `/ ]+ ~: q0 {, l3 `
|| [ "$var_cfg_ft_word" = "UNICOM_BUCPE" ] \! K' x% i; G9 d3 ]1 R
|| [ "$var_cfg_ft_word" = "UNICOMBRIDGE" ] \
5 k% h& t3 |; t0 y$ K|| [ "$var_cfg_ft_word" = "BZTLF2" ] \0 o; S( s' L; S+ [1 l
|| [ "$var_cfg_ft_word" = "BZTLF2WIFI" ] \- X4 F- J' b1 _: g
|| [ "$var_cfg_ft_word" = "CMCC" ] \
1 A! F. L1 }2 Y6 A/ o2 M|| [ "$var_cfg_ft_word" = "CMCC_BUCPE" ] \5 J. f& g& w: d8 H) J
|| [ "$var_cfg_ft_word" = "CMCCWIFI" ] \# z: O& ^1 t5 v
|| [ "$var_cfg_ft_word" = "CMCC_RMS" ] \
( s3 k/ z/ U( M+ N|| [ "$var_cfg_ft_word" = "CMCC_RMS2" ] \
0 L) p% Y7 d; g& Q* n|| [ "$var_cfg_ft_word" = "CMCC_RMSWIFI" ] \
) C7 z" ]% J! Q7 j  Z4 @) t|| [ "$var_cfg_ft_word" = "CMCC_RMS2WIFI" ] \
7 {8 `" T$ J4 j/ f|| [ "$var_cfg_ft_word" = "CMCC_RMSBRIDGE" ] ; then2 e, l3 ~1 E: R
{3 h2 [! M* S) c9 i0 W$ q
        #HW_Customize_Add_Choose6 w/ S  h6 i% Z9 ^' n. L
        if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ]; then$ ~4 g! }1 {) O- U- f: u/ s- q
                HW_Customize_Set_Choose "$var_cfg_ft_word"2 ?% D  B7 d. a2 Z" [7 a# A* H3 N" |
        elif [ "$var_cfg_ft_word" = "UNICOMBRIDGE" ] ; then
4 F2 o  [1 Y7 l) h( _6 ]! `                HW_Customize_Set_Choose "CHOOSE_UNICOM"        ' c# Q1 @, ]  X* s6 ]
        elif [ "$var_cfg_ft_word" = "BZTLF2WIFI" ] ; then
4 u  G* o7 i5 u# P                HW_Customize_Set_Choose "CHOOSE_BZTLF2"  A+ o: [1 s( O8 d0 X# n6 ]
        elif [ "$var_cfg_ft_word" = "CMCC_RMSBRIDGE" ] ; then
! ~: q2 z: p# ^8 v' u' o3 @: ?                HW_Customize_Set_Choose "CHOOSE_CMCC_RMS"
9 `* o( y+ [$ u; ^        elif [ "$var_cfg_ft_word" = "CMCC" ] ; then
) H6 f6 d' A" k                HW_Customize_Set_Choose "CHOOSE_$var_cfg_ft_word"
, T+ M+ I; N- _0 z: z6 A        elif [ "$var_cfg_ft_word" = "CMCCWIFI" ] ; then
% V; l0 W+ c. `                HW_Customize_Set_Choose "CHOOSE_CMCC"0 Z$ M6 _: b" u* L; n" ~
        elif [ "$var_cfg_ft_word" = "CMCC_RMSWIFI" ] ; then2 `$ z$ H' y# B% {. D, @
                HW_Customize_Set_Choose "CHOOSE_CMCC_RMS"# U' j$ Q' u8 ?& ]
        elif [ "$var_cfg_ft_word" = "CMCC_RMS2WIFI" ] ; then0 ]" p  a% d! m5 M
                HW_Customize_Set_Choose "CHOOSE_CMCC_RMS2"
9 P2 V0 v  K' {        elif [ "$var_cfg_ft_word" = "CMCC_BUCPE" ] ; then# l0 p5 H( I) f* f. _
                HW_Customize_Set_Choose "CHOOSE_CMCC_BUCPE"
! q' e9 C" m" Y7 |) B' h        elif [ "$var_cfg_ft_word" = "UNICOM_BUCPE" ] ; then; s. l" w6 c9 s$ M; m9 T
                HW_Customize_Set_Choose "CHOOSE_UNICOM_BUCPE"
0 F) z8 o0 s8 G* `' v8 Z5 }! x        else8 g, {3 X3 a1 R5 ~+ I5 v+ S
                #COMMON/UNICOM定制只有HGU支持免预配置
5 r0 m; l4 l9 t* q1 ?                if [ $var_is_HGU -eq 1 ]; then; Y) {1 w; x# N2 p
                        HW_Customize_Set_Choose "CHOOSE_$var_cfg_ft_word"# L# F4 Z0 A5 B4 U# q( j# j
                else2 k+ B. I( d$ U# V* U& Z: K
                        HW_Customize_Set_Choose ""1 w: J& c8 t' X2 o3 t5 Z
                fi
+ X1 i7 ~+ b+ X) v8 F5 _/ p4 D6 m        fi( k+ }# d5 t; s
}
: ]1 f9 W) a+ Q6 \else
9 F  G2 [4 U/ `/ n8 ?' ?{+ N% n7 c- I+ U( B
        HW_Customize_Set_Choose ""
+ e5 v6 S4 C* K! [6 h}) d6 [) ~2 o+ q- m6 F
fi0 \) O' k- _: u& \- a

; J) I+ j) K9 p2 b2 J2 J. \3 m8 Y  NHW_Customize_Check_Resource $var_input_para
, x/ Z) y. {- Y( Z. u( |3 [- L+ P, p[ ! $? == 0 ] && exit 1
4 P: b+ [6 B: [8 R% l3 y& V/ q
! m8 E/ {! |- ~  W- C# 结果输出
+ @3 [/ n: j# C: h; U9 k4 RHW_Customize_Print_Result $var_input_para
% H) T; Q+ r# V1 ?2 l; h- Q[ ! $? == 0 ] && exit 1
; b: E5 o9 j" z  ^5 c# i5 q7 R0 x
7 K/ a& _" C; F* H0 b8 k#定制处理0 I+ T' O, O1 O2 U
HW_Customize_Delete_File+ t, i* ^' y* P6 c* o( _
echo > /var/notsaveboardinfo
, x/ P& `8 e5 k# L1 a* M' Psync
! s% D3 c2 z% F+ f6 r6 {echo "success!" && exit 08 ]9 L. `& l2 S8 _* Z( y9 `

1 T+ L  N% N$ {, p" [ ------------------------------------------------------------ ?: h# G; Y" {* T

+ F' [. C" N7 S附上下载地址
! c7 f& O. q7 M8 g4 N
% T6 e. V! b4 j: i2 `8 @

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 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_pwd  WPA_pwd1 f+ ?- Q+ U& G* r$ G, Q4 b8 ^
这个是光猫内部定制的参数命令
发表于 2018-3-26 01:43:09 | 显示全部楼层
我手工刷的停在itms验证上了 过两天试试楼主的
发表于 2018-3-26 06:17:51 | 显示全部楼层
支持楼主,收藏备用
发表于 2018-3-26 08:35:53 | 显示全部楼层
搞,大,上。强烈支持技术贴
发表于 2018-3-26 08:42:12 | 显示全部楼层
win10装个linux子系统可以直接调试修改,或者一个Windows下的git编译器
发表于 2018-3-26 09:41:02 | 显示全部楼层
请教下你们用什么修改.sh执行脚本。
* S) w3 v0 L/ Y( ^% N1 c" Z我用Notepad++修改 后无法执行  都是添加的简单的命令 rm,tar,cp之类的基本命令 没发现语法错误
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-5-5 16:30 , Processed in 0.047454 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表