找回密码
 注册

QQ登录

只需一步,快速开始

查看: 35203|回复: 57

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

[复制链接]
发表于 2018-3-25 19:04:27 | 显示全部楼层 |阅读模式
HS8145V 8546V restorehwmode.sh 恢复华为界面脚本解析
  R5 s7 G: M9 C* x4 n2 D根据脚本可以逆转还原成以前的界面和改成其他运营商的界面) l: g& P( _9 F0 @6 K) e+ t

9 F6 v, [6 }, y2 s8 _' Y#! /bin/sh, J- o. c3 Z- s7 x1 L: G
" [9 B8 ^8 p9 f; S6 b
#set hw parameters
( T; H! }  W5 R8 k7 e( P#copy etc/wap/hw_default_ctree.xml to /mnt/jffs2/hw_ctree.xml6 _, j7 X4 K6 K* `2 A- O+ C
#set the spec para
$ t! H8 X9 H9 e1 i% V0 x6 C1 T. z" K8 M+ i, K% |
var_default_ctree=/mnt/jffs2/hw_default_ctree.xml;5 P+ v1 u1 m; k
var_ctree=/mnt/jffs2/hw_ctree.xml
6 d6 u: E8 M( ~" R5 c3 N+ N2 ?; w& `var_customize=/mnt/jffs2/customizepara.txt
8 e4 V5 w3 ~/ r; o2 Tvar_bms_prevxml_temp="/mnt/jffs2/hw_bms_prev.xml"
! `9 T' Y( {% X) F% ?( S3 Lvar_bms_oldcrc_temp="/mnt/jffs2/oldcrc"+ K1 E& ~2 e3 E
var_bms_oltoldcrc_temp="/mnt/jffs2/oltoldcrc"# Y3 `9 \# r5 T5 E5 Y+ @  g
var_bms_prevcrc_temp="/mnt/jffs2/prevcrc"
+ v: n# X" f* H5 Nvar_bms_oltprevcrc_temp="/mnt/jffs2/oltprevcrc"0 y/ j: _+ M6 \: B) G3 p
var_bms_oskvoice_temp="/mnt/jffs2/hw_osk_voip_prev.xml"' S: S7 t2 b: u( m0 V
var_rebootsave="/mnt/jffs2/cwmp_rebootsave"
+ f: z9 F( L& z2 d: Jvar_recovername_temp="/mnt/jffs2/recovername"7 r- R/ F1 `- J( A
var_usr_device_temp="/mnt/jffs2/usr_device.bin"
4 T. N  s  u  @7 G! svar_ftcrc_temp="/mnt/jffs2/FTCRC"$ H3 `8 B, G# B. |' G1 q$ N) w
var_ftvoip_temp="/mnt/jffs2/ftvoipcfgstate"6 j$ Z0 U: l" |% K: d5 g
var_dhcp_temp="/mnt/jffs2/dhcpc"
0 a: q" ?- Z" mvar_dhcp6_temp="/mnt/jffs2/dhcp6c"( b' Q4 }  E! r& b
var_DHCPlasterrwan1_temp="/mnt/jffs2/DHCPlasterrwan1"6 b# _0 }+ Q' d; x# I
var_DHCPlasterrwan2_temp="/mnt/jffs2/DHCPlasterrwan2"/ X' |) H+ N' f7 r& M1 f9 m
var_DHCPlasterrwan3_temp="/mnt/jffs2/DHCPlasterrwan3"
4 B  L; [/ `! p6 I! Jvar_DHCPlasterrwan4_temp="/mnt/jffs2/DHCPlasterrwan4"
8 |. f, Y8 R9 ?7 I$ o7 {var_DHCPstatewan1_temp="/mnt/jffs2/DHCPstatewan1"" X3 A6 W2 z$ _2 q0 v
var_DHCPstatewan2_temp="/mnt/jffs2/DHCPstatewan2"  g4 H( Q4 p, \
var_DHCPstatewan3_temp="/mnt/jffs2/DHCPstatewan3"# @2 z  Z+ Y1 c2 ~1 C' q
var_DHCPstatewan4_temp="/mnt/jffs2/DHCPstatewan4", T: Y# z8 v( Z% U2 k* Z3 `* t
var_DHCPoutputwan1_temp="/mnt/jffs2/DHCPoutputwan1") f0 r$ U) T/ k+ F% p8 a- p5 Q
var_boardinfo_file="/mnt/jffs2/hw_boardinfo"
; J4 Z6 X8 T# z8 n8 E/ Ivar_boardinfo_bakfile="/mnt/jffs2/hw_boardinfo.bak"
7 m* H+ L" x) d9 Z0 Ovar_boardinfo_temp="/mnt/jffs2/hw_boardinfo.temp"
( \3 }2 L$ e  wvar_jffs2_customize_txt_file="/mnt/jffs2/customize.txt"3 A2 g/ l) M. `
var_jffs2_choose_xml_dir="/mnt/jffs2/choose_xml"
* M7 A! |, @6 a% h; Jvar_jffs2_choose_xml_tar="/mnt/jffs2/choose_xml.tar.gz"9 m* m: r) K6 M& W* W' e0 |0 h
var_jffs2_spec_file="/mnt/jffs2/hw_hardinfo_spec"; E$ P: T  n$ V4 L- m/ B! n. z
var_jffs2_spec_bak_file="/mnt/jffs2/hw_hardinfo_spec.bak"
" |+ Y9 Y) j9 o! C) [$ H- N* Tvar_jffs2_feature_file="/mnt/jffs2/hw_hardinfo_feature"
1 m0 E6 O& u; M/ E4 Nvar_jffs2_feature_bak_file="/mnt/jffs2/hw_hardinfo_feature.bak"
/ L1 `+ V3 p* J4 v& N, d3 o5 tvar_jffs2_hardinfo_para_file="/mnt/jffs2/hw_equip_hardinfo"' A4 z3 K6 }  U; K' |! V( y
var_ontfirstonline_temp="/mnt/jffs2/ontfirstonlinefile", R7 G9 E& K& y! [9 X8 B
var_dublecore="/mnt/jffs2/doublecore"
1 [7 w2 I% o) _7 n3 c3 ovar_customize_telmex=/mnt/jffs2/TelmexCusomizePara! p4 V  ?6 Q2 m2 g% H
var_customize_dir="/mnt/jffs2/customize". I& N0 f8 K2 Z, K4 m
var_smartshowbssguide="/mnt/jffs2/smartshowbssguide"9 _" i( n1 S* m
var_smartshowuserguide="/mnt/jffs2/smartshowuserguide"6 k5 K% x9 B/ A& Y' U  q) M
var_old_ctree="/mnt/jffs2/hw_old_ctree.xml"* c& @5 u- \6 W/ L) U* l1 J/ H; |
var_ctree_bak="/mnt/jffs2/hw_ctree_bak.xml"$ X! i3 U; P. b9 d' c, h# e7 O
var_cfgbackup="/mnt/jffs2/CfgFile_Backup"
1 D" e' J8 x4 r# o3 avar_PrimaryDir="/mnt/jffs2/PrimaryDir"
8 E2 ~" b* w( Cvar_p2p_dhcp_file="/mnt/jffs2/p2pdhcpboot_prev.ini"( o$ n% B$ A& M; C. m% Q, u" R
var_jffs2_hardversion_bak_file="/mnt/jffs2/hw_boardinfo.bak"7 N  A/ I6 S5 ?. q( V* ?* o
var_jffs2_specsn_file="/mnt/jffs2/customize_specsn"2 ^+ S. \; A2 v6 Q
9 A" ]/ o1 m& m2 |" B
var_plat_root="/mnt/jffs2/platroot.crt" " ~6 n! m6 e! G* c9 A
var_plat_pub="/mnt/jffs2/platpub.crt"
- {/ P* {8 i9 U" `5 Zvar_plat_prvt="/mnt/jffs2/platprvt.key"
( v# D$ j6 Z% N% N8 L2 }7 u
/ j2 b% z, u5 Y# remove plugin files ; x& S( m) \0 S; O+ Y8 C
HW_Script_RemovePluginFile()- j$ u- b1 T  I5 ]
{
$ r- O, ~8 Z8 e; Y        #通过特性开关来决定删除哪些插件
8 ]1 G( h0 J6 i, x: M        var_feature_enble=`GetFeature HW_FT_OSGI_JVM_FROM_VAR`
# G  ?2 `% R3 d* c$ O9 C1 ^, h        if [ $var_feature_enble = 1 ];then
0 t1 v" a9 B' U" `3 Y9 J7 k& m                rm  -rf /mnt/jffs2/app/osgi/felix-cache;
5 w% I' [1 `0 \2 Q        rm  -f /mnt/jffs2/app/osgi/prebundlestatus.info;
: o5 E8 r; H' C        rm  -f /mnt/jffs2/app/osgi/dlna.jar;" A4 N+ L7 Y; x7 J% [+ s
        rm  -f /mnt/jffs2/app/osgi/samba.jar;$ q" Z- V2 }' Z! F! Y" _9 U+ w  G, V
        else
, B1 l8 m8 k) g2 [" u7 q                rm  -rf /mnt/jffs2/app/osgi/* ;; i" s9 i3 P  j  a9 ^2 q* Q4 G+ [
        fi
* ?7 ^/ I) D9 c5 d3 z: A8 I4 J6 N3 h- O        rm -rf  /mnt/jffs2/app/cplugin/* /var/cplugin/*;
* W# ?' t: e4 ]: L2 b. H. v}
% j2 [3 i2 Y- T7 Q
  d; L  ?$ c' s* A# remove files
( k" {5 e) C3 T7 G3 `7 U) mHW_Script_RemoveFile()
. T& F; p. {. r) g" \+ Z% K2 @8 @{& N3 ]' I# L% R1 o: H  V
        rm -f $var_default_ctree
5 K+ S1 }# y: T  |        rm -f $var_ctree* c8 G5 d$ R3 n' S: e1 j  f
        rm -f $var_customize4 M8 B3 f: |; W5 d
        rm -f $var_bms_prevxml_temp: |1 T/ x7 s, u2 L
        rm -f $var_bms_oldcrc_temp
6 _+ N! K: e* m: A        rm -f $var_bms_oltoldcrc_temp
7 K) p' b3 Z: M5 v0 u        rm -f $var_bms_prevcrc_temp
+ b5 C! H; C; O, ]        rm -f $var_bms_oltprevcrc_temp
& R% `7 Z$ _  b        rm -f $var_bms_oskvoice_temp6 F& V  _+ C) @9 R% H3 I
        rm -f $var_rebootsave
5 T; p) c+ v0 U& Z6 l! b        rm -f $var_recovername_temp. ~8 b) \9 f& O7 }
        rm -f $var_usr_device_temp
3 J  u5 _0 ~/ S, \/ j& @6 L" ]; h" {        rm -rf $var_ftcrc_temp) D6 R3 Q  v, ~( t: H1 T4 r& ?# u, I
        rm -rf $var_ftvoip_temp
, S2 I+ ?9 \9 f9 h6 R" x  C, m, N. C        rm -rf $var_dhcp_temp
& E/ c5 f: O5 W# D7 [# \        rm -rf $var_dhcp6_temp
3 ]- t4 g  o/ {1 s; n2 Z        rm -rf $var_DHCPlasterrwan1_temp
9 O. j1 k# Z) R& \! r" ]        rm -rf $var_DHCPlasterrwan2_temp; v/ S  O& e4 V. M# ?$ T( H
        rm -rf $var_DHCPlasterrwan3_temp
& ?' y8 E) v8 o- F        rm -rf $var_DHCPlasterrwan4_temp
8 `% b" M6 g2 a8 q7 s        rm -rf $var_DHCPstatewan1_temp8 g, Y" z8 U; j5 W
        rm -rf $var_DHCPstatewan2_temp3 ]7 ^) F5 }2 ]6 \) k0 v' l) b
        rm -rf $var_DHCPstatewan3_temp* Y+ z% k- m! c8 K4 ~# @
        rm -rf $var_DHCPstatewan4_temp
9 y- L  g( q. K' d& a1 y7 |6 B        rm -rf $var_DHCPoutputwan1_temp
% _: a) J* I4 V: \# X) _        rm -rf $var_jffs2_customize_txt_file5 q& _% F8 B  l* B
        rm -rf $var_jffs2_choose_xml_dir* v/ A$ H( o6 f. V1 {( M) T
        rm -f $var_jffs2_choose_xml_tar
5 R' z8 ~; h# w        rm -fr $var_jffs2_spec_file
. T0 s8 Y6 \! x$ z        rm -fr $var_jffs2_spec_bak_file4 Y% v2 e  {8 `: W1 `
        rm -fr $var_jffs2_feature_file
+ n1 {: E. F/ _# }% @' Y        rm -fr $var_jffs2_feature_bak_file
- d, x1 i, e7 A7 G        rm -fr $var_jffs2_hardinfo_para_file/ Q/ c+ f. d2 f- m. F
        rm -fr $var_ontfirstonline_temp0 [. C. n# x9 _$ l/ O6 A. M$ J
        rm -f $var_dublecore
2 Q" o* x) y3 T' d8 V        rm -f /mnt/jffs2/simcard_flowflag0 g. W$ u: u: s; m$ p& b' _6 m
        rm -f /mnt/jffs2/simcardreadflag$ t$ _% V" e- i& g
        rm -f /mnt/jffs2/typeword
0 k) ?3 c1 O& Q8 Z2 ], n        rm -f $var_customize_telmex. L3 b6 X$ p$ A
        rm -rf $var_customize_dir
& w0 @2 A. n9 P. _        rm -f $var_smartshowbssguide0 ?8 s6 t$ b; |' T% W- d1 n
        rm -rf $var_smartshowuserguide
7 O* _- b6 q: t# @- b) q2 J        rm -fr $var_old_ctree
; \; v8 M8 Q, g) S' X. K2 Y+ h        rm -fr $var_ctree_bak
. o. I, _1 E' a$ M- Z# [( f8 f        rm -fr $var_cfgbackup
. E7 n3 S  I, A9 b' i3 g8 O        rm -f $var_jffs2_hardversion_bak_file
8 m% ~. O) S' o        rm -rf $var_PrimaryDir2 k, z6 F3 J1 _8 G# f
        rm -rf /mnt/jffs2/p2ploadcfgdone% S5 J- _! h, N+ m6 p2 W  U1 I3 P
        rm -rf /mnt/jffs2/dhcp6c3 M; y3 ~1 u! f9 a' w& y" V- E
    rm -rf /mnt/jffs2/dhcpc7 p+ ]. ]0 c: h( f* F( c" h
        rm -rf /mnt/jffs2/onlinecounter
; z, d/ a) @& A5 f        rm -rf $var_jffs2_specsn_file
# C4 V, \) f* p        rm -rf /mnt/jffs2/reboot_bind_tag6 d8 ?2 Z5 v; i3 `  z# Q
        rm -rf $var_p2p_dhcp_file# Q  y( I; }( X7 o
                1 W. |. U' I7 ~: Z
        rm  -rf /mnt/jffs2/app/osgi/*
" Q: n& V* k8 Y+ C5 l. L' `. s        rm  -rf /mnt/jffs2/app/cplugin/*& f3 f! M6 U8 N( `# ^+ S( s5 F4 u
       
! o% @" s+ N0 @& t# q3 }3 u        rm -f /mnt/jffs2/smooth_finsh
: B3 v2 v: N& O! [: A        : X8 r0 X# s: o* V' ?" i) P7 I
        rm -f $var_plat_root
  I, L! B2 b1 h: f' U        rm -f $var_plat_pub: O: u; d& j$ g3 e
        rm -f $var_plat_prvt
- L0 l9 T2 O  D1 T( h. _# f. |0 E- @, w
        HW_Script_RemovePluginFile
) p& R. q! q; ~. P* y+ u        return6 E/ O/ [" h* z* H  u, ?" A; h
}+ D" J8 |7 F5 V- B4 L
  X. ?9 r" b0 S1 C7 z# g  q( f
#creat files
3 r: r5 I; z' S  c2 l9 vHW_Script_CreateFile()( b' f" Z9 N" l4 G. [6 ~% `
{. y% w' u7 c2 j0 ~. p6 N( Y
        var_telnet_flag=/mnt/jffs2/ProductLineMode: z( @% }3 U* }; Y) q

: X& _  G7 b+ O        echo "" > $var_telnet_flag# V7 g  M- z. N( Q% J3 W+ V
        if [ 0 -ne $? ]" N7 _6 ~6 O/ T' Y8 c% c
        then* ^# Q1 A9 r: T3 G; y* ]! d
        {7 {, h, l( u  U! V9 T- S. n
                echo "ERROR::Failed to create telnet flag!"
* r# D  ?# U' H" D0 K2 z. g        return 1# g4 g' Z# E+ L$ F% {, E
        }0 K4 A- o, ]6 M0 G* ^. h
        fi
5 c# F! E& ~7 b: ~$ l+ h  E
+ z2 y* J7 y' r2 _% z        return 07 I1 t6 ^1 H$ g
}
7 R( s+ j4 J+ v
" G: Z$ Q. B9 a# copy files
, e+ r- b: I' t+ u- p' GHW_Script_CopyFile()
3 J; h# T8 Z& I" Y- L{
2 `! F. f2 K9 S4 i# c        var_etc_def=/etc/wap/hw_default_ctree.xml
3 w( ^$ H( {9 G        0 q5 X2 _* }4 b) x4 p  _  b  i
        #增加延时,确保DB不保存
" O2 |5 v/ F5 q  D+ |        echo > /var/notsavedata+ v& j! v5 ~  h2 Y
        sleep 1
; a4 L% d3 T! B7 Z
6 m1 B4 }3 `3 Q% @        cp -f $var_etc_def $var_ctree
! y; X9 t' d* [! _( v9 P        if [ 0 -ne $? ]
0 S7 J9 f& p2 [2 e6 G$ F- w        then
  X4 N: i. r! x' w) A                rm -rf /var/notsavedata
! x* M0 h( B7 M2 `                echo "ERROR::Failed to cp hw_default_ctree.xml to hw_ctree.xml!"
% _$ {( |9 P* U: x                return 1+ K6 w& N6 J% C: g
        fi
% I1 K, m4 }2 S$ ~6 q7 N6 K- z; V, y
        return
- ?5 j0 i2 B4 n}
3 E! h/ E8 g1 u" D& A$ o# R
3 u, g  X5 i7 \: a; W# set spec data8 h5 s5 u2 D# }) ^0 Z+ t
HW_Script_SetData()
1 g7 m6 q4 a2 w3 ]# t{
9 N6 W2 Y3 G" F! W6 V        cat $var_boardinfo_file | while read -r line;& b- o( H6 {/ A# V% G
        do/ V5 H- l8 g  M; p8 z0 ?
                obj_id_temp=`echo $line | sed 's/\(.*\)obj.value\(.*\)/\1/g'`
, h6 n, }" C, e! [) \                obj_id=`echo $obj_id_temp | sed 's/\(.*\)"\(.*\)"\(.*\)/\2/g'`
5 H3 n/ A! I+ i/ ?3 J" X" x( L3 G
                if [ "0x00000003" == $obj_id ];then6 p6 P7 z+ d  T" e
                        echo "obj.id = \"0x00000003\" ; obj.value = \"\";"
5 ?. c  p1 R* E, {                elif [ "0x00000004" == $obj_id ];then
) w* w) }' O7 @+ B) v                        echo "obj.id = \"0x00000004\" ; obj.value = \"\";"8 B. Y% K: U4 o% U0 n; f$ `# y7 D
                elif [ "0x00000005" == $obj_id ];then
0 n4 P  {/ d1 ?. x                        echo "obj.id = \"0x00000005\" ; obj.value = \"\";"1 N8 \7 _% ]! Q! g  A$ Z) Q
                elif [ "0x00000006" == $obj_id ];then8 V: g5 R! T$ H
                        echo "obj.id = \"0x00000006\" ; obj.value = \"\";"
9 q( a7 P" }" M9 F2 H3 G2 ]                elif [ "0x00000016" == $obj_id ];then
, G: c+ C: X/ W                        echo "obj.id = \"0x00000016\" ; obj.value = \"\";"
  s% S. W  ^, k0 s( q1 h! J                elif [ "0x0000001a" == $obj_id ];then: L* y6 D$ ]5 X6 D4 \) X* u2 f: L
                        echo "obj.id = \"0x0000001a\" ; obj.value = \"COMMON\";"
( S( ^5 n8 M2 M4 U% }2 W0 T                elif [ "0x0000001b" == $obj_id ];then) S" v, \* C, z& A( J6 q
                        echo "obj.id = \"0x0000001b\" ; obj.value = \"COMMON\";"6 v  ~3 }/ u4 k
                elif [ "0x00000019" == $obj_id ];then
  g/ P  L: |6 h6 P& ^- J                        echo "obj.id = \"0x00000019\" ; obj.value = \"\";"
3 y  F3 E( H. {, v: |% I                elif [ "0x00000020" == $obj_id ];then# E0 h( L; G1 V; _4 ^1 y
                        echo "obj.id = \"0x00000020\" ; obj.value = \"\";"9 J; ]' L, i+ D* b0 V- S
                elif [ "0x00000031" == $obj_id ];then
+ ^& T, @1 t3 ?" H/ i, }                        echo "obj.id = \"0x00000031\" ; obj.value = \"NOCHOOSE\";") }4 L7 t8 ]6 t. U8 e
                elif [ "0x00000035" == $obj_id ];then
3 s+ y/ _. P) M                        echo "obj.id = \"0x00000035\" ; obj.value = \"\";"
5 R5 o' v" [/ o; y! {                elif [ "0x0000003a" == $obj_id ];then
( }' x, z* z2 [' q' z                        echo "obj.id = \"0x0000003a\" ; obj.value = \"\";"
# q8 l7 d# {. E& w                else
# L% I+ L5 C: K. p                        echo -E $line
& u# V9 g6 F" D/ \+ M; ^                fi
; B" S6 D7 g. }" z4 T2 V, G7 @        done  > $var_boardinfo_temp
+ Z. Q3 L! R# {; g1 s: G$ L  d% w* j$ P- Z3 m3 L
        mv -f $var_boardinfo_temp $var_boardinfo_file
! C- J! B/ Q6 ?, h# W" A( ]; _. e
        return. Y4 j+ s$ d  V0 D
}; _1 ^, ], `9 z" q# \  R

; c7 A% Z1 [6 A% C8 w4 L! j# 刷新boardinfo文件的crc行4 I6 W/ r! _2 d
HW_Customize_ValidateBoardinfoCRC()( q' c( @0 ]  T6 Q
{
) D3 C+ c! n% l- `. V& W        if [ -z $1 ]; then0 q, I: Z: J6 X2 [; E
                return 0
1 Q: L2 E% E6 P5 Z5 z        fi- g( @+ Y* B+ I+ Y5 a$ T. j
        if [ -x /bin/factparam ]; then
; b( R6 J5 e$ W- \# r/ y                /bin/factparam -v $12 ?6 p8 m/ E, x* x8 D9 z
                if [ 0 -ne $? ]; then
% [6 O8 L$ t9 D                        echo "ERROR::Failed to validate boardinfo crc on $1!"
& @- _2 x# S  J! o; ~# Q                        return 1
  R$ j( C; X! @( g                fi
& l* M: y4 b$ U: x$ _) p/ S        fi5 ?4 _% s1 ]2 w
}* p. B7 p4 b2 H7 U" c
) S3 E8 E+ J( S$ z
# 清除出厂参数备份1 F& V/ i0 N8 \% o9 h; Q& `
HW_Customize_ClearFactoryParamsBackup()
" _2 b" I7 P; y+ |: F# O- _. G9 E{
/ `2 W' l+ Q: T# a+ @5 q, l        if [ -x /bin/factparam ]; then
; x4 M. Z8 Z! M) o" f: k                /bin/factparam -e reserved
" K0 z& V6 B. O' y* w8 d& p9 u, P9 @                if [ 0 -ne $? ]; then# i, G% |1 w3 M8 ^! T
                        echo "ERROR::Failed to clear factory parameter backup area!". E3 Z, O! u- f0 H) X" \! t9 w
                        return 1
: E/ U6 m/ O- ~# P9 |                fi
9 a6 O6 A6 H5 E+ c% t3 d  b8 e0 I        fi
5 o9 H: E( D9 }5 @5 I9 ^8 K3 s1 h}- V1 d6 j6 p2 D/ n* J1 T  I! {  B
5 G: w2 p* X0 w& G6 P
if [ 0 -ne $# ]; then2 X8 M. Q. N. U* y
        echo "ERROR::input para is not right!";
: V" Q6 h$ Z& @        exit 1;( Q- o' a* {' `3 F# O& ]
else
  d( I1 z$ @! A0 o: }" sHW_Script_CreateFile
. W: Y/ M# ?' o- y% q# G  O$ i[ ! $? == 0 ] && exit 1+ o+ l  o+ f$ C3 y  z5 Z
( Z& K- h! q- ~- ~5 w9 b% e
HW_Script_RemoveFile7 k6 M# `% |1 M  r. n" Q
[ ! $? == 0 ] && exit 1
. P' k, l3 D4 [* @, m3 v) b3 n" N* ]. A  O# h( ~6 g  z( T2 o
HW_Script_CopyFile# s# s! U4 L' s4 g% Q
[ ! $? == 0 ] && exit 18 h! ^2 c2 I( X, p* W5 {  C( M
  B+ R2 q% Y% A$ o* l
HW_Script_SetData/ R- n$ U2 m4 L
[ ! $? == 0 ] && exit 16 S$ l& @9 Z8 X+ \% c; J7 K

  L! ~  @* a. F% brm -rf $var_boardinfo_bakfile2 I. {- P% ]! l0 G6 e  M. e
0 l5 a, m* C* P! L5 m3 k7 }3 W& q
ctrg_support=`GetFeature HW_SSMP_FEATURE_CTRG`+ H! |% S" t) Z$ I
if [ $ctrg_support = 1 ] ;then5 {5 b9 n) Y. s, L  X
        dbus-send --system --print-reply --dest=com.ctc.saf1 /com/ctc/saf1 com.ctc.saf1.framework.Restore > /dev/null
6 b$ V( V% G' Afi) J' B6 q) r* R6 l; q  \2 Q6 {

& o1 |" `3 s' Y" F  ?# 必须刷新boardinfo文件的crc行,并且清除reserved分区的出厂参数备份$ k5 G& I4 x4 I# y! x, M
HW_Customize_ValidateBoardinfoCRC $var_boardinfo_file
1 ]; _2 F) u* R" t8 ]+ m[ ! $? == 0 ] && exit 1, ^% ^4 |9 c+ E5 o, r7 M$ G
HW_Customize_ClearFactoryParamsBackup  P( d: E/ b; M- p) |! u7 |' W
[ ! $? == 0 ] && exit 1$ N2 s+ J/ o+ Y# T+ n
0 c8 ^. s& Q/ c6 T
echo "success!"
% D8 i1 ?8 K4 k1 Z3 @. g/ L) _7 A. v
exit 0) K4 m) Z  M' G& b7 @3 [  e9 f
fi/ U1 V3 k+ @: X8 k0 z% X/ ~) ~
: M: d6 ^$ l$ L; p2 ~  U* s5 i

" y# ?1 a2 z0 m--------------------------------------------------+ W/ w# N' E+ d" @% A! D9 [. F
最后附上脚本下载4 O4 k* C$ G6 w! c& m

! X0 z! I/ T. |; a! n) R' S

本帖子中包含更多资源

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

×
 楼主| 发表于 2018-3-26 11:19:36 | 显示全部楼层
qq519948746 发表于 2018-3-26 01:41
+ z: u3 D4 h- q8 ~4 G% M请教下你们用什么修改.sh执行脚本。# Q. w8 Q$ u. z: x$ y
我用Notepad++修改 后无法执行  都是添加的简单的命令 rm,tar,cp之 ...

- M( P7 f- T3 K* K) T" L5 p' r8 Dsu
: ~1 l6 a7 H7 F0 M4 T* p; lshell1 P9 ~1 w4 x+ C8 ], S
把权限获取了先
发表于 2018-3-26 00:15:45 | 显示全部楼层
期待高手做出三网自动转换的脚本!
 楼主| 发表于 2018-3-25 21:04:16 | 显示全部楼层
这个是选择三网配置的脚本。一般用来选择电信 移动 连通 界面- o! ]0 J; _! T, }" D+ t
-----------------------------
3 K) O( z% L2 ?' D. d#! /bin/sh
% ~  x# u2 K2 f" _. ^4 U
4 n+ D+ [( \, X& g% x6 R( i# 输入参数变量) p+ [7 ^5 K' v0 r2 d
var_bin_ft_word=$(echo $1 | tr a-z A-Z)
! \  K) _& X, w- Gvar_cfg_ft_word_init=$(echo $2 | tr a-z A-Z): B/ P# k5 G4 g$ F9 R0 P
var_cfg_ft_word_en=$(echo $2 | tr a-z A-Z)
: j+ c( b( ]! }8 |8 W( Y1 |& kvar_ssid=$3
3 b6 l, M4 I0 f8 hvar_wpa=$4$ \+ C6 o: c* q+ `
var_input_para=$*
0 j1 T' W& D2 K, n' |( K8 Q: \; Wvar_is_HGU=1; `$ H: Z) Q1 W/ ?1 Z$ F: U
var_is_ENBG=02 T+ l2 H( d4 m
var_para_num=$#( |: A! H( {7 y
var_customize_telmex=/mnt/jffs2/TelmexCusomizePara% \# `2 ~) {3 [. h8 j- q. I
var_jffs2_specsn_file="/mnt/jffs2/customize_specsn", [) ]- d: _& S( a% u

: A3 }* D4 _+ b' L& c' [# 全局的文件变量
7 J: ~- \$ z7 Q6 H! a! R; J3 Kvar_jffs2_boardinfo_file="/mnt/jffs2/hw_boardinfo"7 Y, Y4 a# H/ _- e; J
var_boardinfo_bakfile="/mnt/jffs2/hw_boardinfo.bak"
. u% A! a- `7 F+ E  D" `var_jffs2_customize_txt_file="/mnt/jffs2/customize.txt"
6 M* s. I5 M6 fvar_telnet_flag="/mnt/jffs2/ProductLineMode"- J7 J! B- t) a( [
var_hw_hardinfo_feature="/mnt/jffs2/hw_hardinfo_feature"! G2 S0 x5 g3 `+ k* ]
var_hw_hardinfo_feature_back="/mnt/jffs2/hw_hardinfo_feature.bak"
) v6 {. o# P. U2 y" D% ]3 T, x, O, s+ Z! A$ f" i* G
# 其它变量% S: m8 b" Q9 ?
var_pack_temp_dir=/bin/
8 F- f* b$ z! p% k  V; Grm -rf /var/notsaveboardinfo
7 I9 p% D) f  I4 o/ R9 I5 N8 h) a% ]
#新增企业网防串货特性,会在配置特征字后添加_ENBG: _; ~5 O7 }' J6 ?
var_cfg_ft_word_en=`echo $var_cfg_ft_word_init | sed 's/_ENBG$//g'`
: N0 d, g3 k; _( K* X, |% m# eif [ $var_cfg_ft_word_init != $var_cfg_ft_word_en ];then
1 o) O; l5 s/ f0 D( A3 e+ R+ U        var_is_ENBG=1
0 n! V' R3 }0 \, t- v8 Nfi
& B& O, u0 v1 x: f1 D$ H) D2 g/ x7 u; n. _3 _
var_upcase_cfg_ft_word=$(echo $var_cfg_ft_word_en | tr '[a-z]' '[A-Z]')
* x& I( `7 n5 a# `var_BUCPEkeycfg=$(expr match "$var_upcase_cfg_ft_word" '.*\(BUCPE\).*')& y9 S+ d. [# L/ Z' K

1 [  l' d7 v  Q2 d. R#判断配置特征字是否包含:字符,var_cfg_ft_word 和 var_cfgfileword JSCT:8X2X定制 var_cfg_ft_word=JSCT,cfgfileword=8X2X* S  h) g2 H" G1 G5 O. ^  _
#将回显输入到空设备文件' T8 g. A5 I1 z5 C
echo $var_cfg_ft_word_en | grep : > /dev/null# i# G" _' R$ p0 b
if [ $? == 0 ]4 \2 q* I9 F$ _
then
: P" z% {+ N. |- H% \* q3 `# @        var_cfg_ft_word=`echo $var_cfg_ft_word_en | tr a-z A-Z | cut -d : -f1 `
# q, c* r( X- P3 ?  |0 ^1 S8 C% J! a2 b4 R        var_typeword=`echo $var_cfg_ft_word_en | tr a-z A-Z | cut -d : -f2 `  ~4 [2 U( C$ m, b3 K0 ^# y
        var_bucpe=`echo $var_cfg_ft_word_en | tr a-z A-Z | cut -d : -f3 `
& J# g" X/ {- ?+ O" lelse
: s8 X) s9 E/ H) i4 U        var_cfg_ft_word=`echo $var_cfg_ft_word_en | tr a-z A-Z`( Z( e4 L' D, N# D+ U6 E
        var_typeword=""
% F4 s  Y, E- x3 o; j% D+ O. o( _fi+ n) B" U2 P, _* D0 _
# q4 s& I) h! z2 ]  y! U9 S) I
if [ "$var_typeword" = "BUCPE" ] || [ "$var_cfg_ft_word_en" = "CHOOSE_BUCPE" ] ; then+ u+ @* m1 L- h: }. P( f
        if [ -f $var_hw_hardinfo_feature ]
: |  e& s/ M; y4 z        then4 d2 ?' m. u1 w8 e4 X5 u8 T
                echo 'feature.name="HW_SSMP_FEATURE_GXBMONITOR" feature.enable="1" feature.attribute="0"' >> $var_hw_hardinfo_feature
. _; v1 w0 f( u, F        else 0 r, k+ K  T$ v3 n7 v
                echo 'feature.name="HW_SSMP_FEATURE_GXBMONITOR" feature.enable="1" feature.attribute="0"' > $var_hw_hardinfo_feature
$ y% X8 O4 b5 M        fi
* G' T4 ?8 i( J% r* X       
3 F3 T4 j: j& b: H: v, [        cp -rf $var_hw_hardinfo_feature $var_hw_hardinfo_feature_back
8 C1 x8 U4 o  `        var_typeword=""
. n' `/ u+ x0 B5 N5 P, r' @fi! j- K6 V. ]( T/ O, K( H* N1 m% t: ?
" z' M  o! U6 w/ `
if [ "$var_bucpe" = "BUCPE" ] || [ "$var_BUCPEkeycfg" = "BUCPE" ]; then
! e  `; S3 @( F" g        if [ -f $var_hw_hardinfo_feature ]
6 a/ a2 I2 D2 ]$ ~# K) K7 g        then' O+ G) L- q) S  R: s1 _5 Q
                echo 'feature.name="HW_SSMP_FEATURE_GXBMONITOR" feature.enable="1" feature.attribute="0"' >> $var_hw_hardinfo_feature4 E3 ~1 X+ g  t1 h, S* b
        else 6 W8 U0 j9 H- v3 v
                echo 'feature.name="HW_SSMP_FEATURE_GXBMONITOR" feature.enable="1" feature.attribute="0"' > $var_hw_hardinfo_feature
/ f, ~  b3 w# S        fi
6 B1 o! P5 c- b. I- K6 }       
$ l1 y; K  P) I        cp -rf $var_hw_hardinfo_feature $var_hw_hardinfo_feature_back
, j+ H- I" ^0 b. pfi
, P+ f/ q6 Q3 S3 P9 A( |; Y1 k8 x2 i5 U/ P) |; G. o
var_cfg_ft_word_save=`echo $var_cfg_ft_word_init | tr a-z A-Z`4 Q, G) Q( e7 m& {1 m" i
var_cfg_ft_word1=$var_cfg_ft_word
1 _! V; C" o$ P1 I: B2 ~) e, Y5 K/ k* L# a7 V3 ?9 |7 t
var_cfg_ft_word_choose=$(echo $(echo $var_cfg_ft_word | cut -b -7) | tr a-z A-Z): j7 \' M& p6 Z1 J! F7 K
# E2 _' f7 m6 r' ~
HW_Check_Boardinfo()' _4 ~( y# b' G1 U( a
{
- D8 b. v" l! ~. j        if [ -f $var_jffs2_boardinfo_file ]; then8 n% F2 w/ g  i' z# I# h. @3 L7 V7 P$ A
                return 0;/ }5 {8 E/ h3 g
        else
8 [+ n0 S6 V- s' X7 ?! Q+ }% {& a                echo "ERROR::$var_jffs2_boardinfo_file is not exist!"
5 F7 ^: p9 k6 ~# M2 m* R                return 1;
& e& x+ m5 s3 X# A        fi
1 o! G& j$ w) ]8 R}
2 p& d, W, M2 a# j8 K" b: x2 M$ O
# 通过cfgtool设置程序特征字和配置特征字,这个操作在装备资源校验完成后执行
( C8 }5 c. r( }) T/ m. YHW_Set_Feature_Word()6 Y" B; m. [' I, B& }% q0 y) `6 w
{1 Z* g4 ^# W" O* J- ~" K7 S" N, c: l
        #程序特征字的ID为0x0000001a,配置特征字的ID为0x0000001b,
9 G$ T6 L7 e- q; c        #这个是跟DM的代码保持一致的,产品平台存在强耦合,不能随意更改
% {: Z8 Z, `5 ]3 b9 d/ }) D: O, I) C) ^
        #判断配置特征字是否以WIFI结尾,如果是则删除* w1 \: ~8 I3 q! B$ m9 o# \
        var_cfg_ft_word_temp=`echo "$var_cfg_ft_word" | sed 's/WIFI$//g'`. d% B7 Q  ^8 _. x* J
        if [ "$var_bin_ft_word" = "CMCC" ] && [ "$var_cfg_ft_word_temp" != "CMCC_RMS2" ] ; then
% z& D( G5 i$ i: N                var_cfg_ft_word_cmcc="$var_cfg_ft_word_temp"6 P$ F. t: W3 K7 b" _4 p/ C$ s
                var_cfg_ft_word_temp=`echo "$var_cfg_ft_word_cmcc" | sed 's/2$//g'`
$ a1 d) z& y: F                ! E7 F" T" O1 ~5 v% }8 s+ x7 ]% ]. K
        fi
, Y- z5 r* c+ x& A8 I
3 r8 D+ Y; W+ z3 @, H9 f$ D; Z2 `        #如果是免预配置,电信定制为E8C E8C,联通定制为COMMON UNICOM, ?! t9 t5 L4 ?" R
        if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ] ; then
* A  s7 M- o3 A1 w9 i5 Y                if [ "$var_bin_ft_word" = "E8C" ] ; then
( f" x$ [( H- h% }2 _9 F' i                        var_cfg_ft_word_temp="E8C"
# ?, @- P2 W+ J+ B( d- ]$ A% Y                fi/ z* X" M  i/ j& p9 P
9 \8 D2 ^3 D; f0 |. E: J
                if [ "$var_bin_ft_word" = "CMCC" ];then7 o+ P) @7 D! S* q8 i! e0 O+ q
                        var_cfg_ft_word_temp="CMCC"
0 M6 D+ R3 J/ P0 w8 O# y                fi
  l* ^  n0 L* F! a               
9 T) G8 v7 }6 e5 q3 @! ~; O                if [ "$var_bin_ft_word" = "CMCC_RMS" ];then4 B! D4 M3 v4 @: K+ X, V
                        var_cfg_ft_word_temp="CMCC_RMS"
. Z& D2 K' {3 I# }! [( ?6 e, m                fi8 z+ h0 T6 x, b. @' S, u
                ' Z% V4 E" O$ h5 o: B
                if [ "$var_bin_ft_word" = "BZTLF2" ];then4 ~2 @: R" }, B7 Q* ~1 v
                        var_cfg_ft_word_temp="BZTLF2"8 S  w" M0 w  `6 c" l# k: `, v4 ~, }
                fi# O; d; `. l1 |5 e) x+ i7 ^
" G- E8 T2 [6 E- N) _
                if [ "$var_cfg_ft_word" = "CHOOSE_UNICOMBRI" ];then/ T: \: S  d# F& ?# E2 Z! M
                        var_cfg_ft_word_temp="UNICOMBRI"2 I4 p0 u; V+ _- b% O. y0 `) {
                fi
3 ]" w9 v6 E) \' L        fi1 W5 ^. z4 O& V4 y# q* I4 l
       
7 y" f% c" I5 d2 Y& H        if [ "$var_cfg_ft_word_temp" = "CMCC_RMS2" ] ; then( ?; G, k! Y8 w
                var_cfg_ft_word_temp="CMCC_RMS"+ \# ]: y; y) N- R. w) J8 S
        fi
% I, ?! u9 e& e" m4 H: Q" }" N* f7 A2 Z
        #检查boardinfo是否存在
( Z3 Y2 @; T4 v( T, M, q' \1 A: y" R        HW_Check_Boardinfo" m1 a, E5 W! \! M8 f  Q
        if [ ! $? == 0 ]( B0 c( k; a2 F+ W( e; u/ ~
        then8 V  K# D, V9 x% \2 G
                echo "ERROR::Failed to Check Boardinfo!"
$ r1 m( `9 ?2 M8 ?& B# x- u& S8 H1 l4 Z                return 11 k& I8 ?3 m; k) f& U
        fi
, B; Q) f0 L9 J" }- G. ]) ?9 v$ l( n7 E7 U% z" G
        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' -i2 ~/ G8 @* h8 z. u
/ x3 l+ y; W/ C" m6 n, t
        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
5 }  M8 T  `/ w2 l3 }
5 {  D8 T% i, E- b  N        #根据配置特征字后是否带_ENBG判断其是否为企业网ONT,企业网为@EN#Common&,其它运营商为@CN#Common&
- o% G2 v' H2 F$ Q" E" _        if [ 1 == $var_is_ENBG ];then
- L$ }0 q! y0 |# y5 _# T- \/ G& C                echo $var_jffs2_boardinfo_file | xargs sed 's/^obj.id = \"0x0000003a\".*$/obj.id = \"0x0000003a\" ; obj.value = \"\@EN\#Common\&\"/g' -i: F1 G% l  D% x5 K9 \* j. N
        else
( a# T6 H+ \5 M" G! v8 X& N                echo $var_jffs2_boardinfo_file | xargs sed 's/^obj.id = \"0x0000003a\".*$/obj.id = \"0x0000003a\" ; obj.value = \"\@CN\#Common\&\"/g' -i
7 {" p- o4 |" f2 c6 D        fi  W$ b6 H) V3 j# \9 m% T* [
       
* I: n! K( u+ ~        #保存程序特征字和配置特征字到文件/mnt/jffs2/customize.txt,getcustomize.sh从这个文件中读取,为了保证boardinfo能够完全写入,需要放在最后面
! O, F3 U3 R) |6 H5 \/ j+ }) o8 I        echo $var_bin_ft_word $var_cfg_ft_word_save > $var_jffs2_customize_txt_file
' Z" `/ I/ K' p; \: A6 |. G" {}/ i0 b: k3 [' J1 c7 b! Q
' l: [- T8 V% U( Q' H1 m5 a6 G
#设置typeword字段' D: ]% m0 O8 A3 \' z, ?6 M
HW_Customize_Set_CFGTypeFile()
/ ?  ]0 M  b6 O; X4 V{8 G4 f- u8 j% ]* ]
        #后面会进行检查,再次不检查boardinfo是否存在
7 J3 s6 Z# s1 ^, S1 U        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
: k0 l0 a+ A# w: r8 Z        return 0
0 k' a0 C) ^5 A! B- O' k* T}  b' X" J7 K& x% I

9 O% i9 k1 ?3 s' J6 d* w#设置cfg fileword
4 @) P8 @3 |, K# S+ x" Y1 s  XHW_Set_CfgFile_Word()
/ o" A# c* Z$ G) ^{
- k( _+ n! S  @- h# j% U" X# n        if [ -z "$var_typeword" ]
: ?* J$ `3 [- s, P; Q        then
, E0 l7 O- k. i/ Z! {4 E                HW_Customize_Set_CFGTypeFile ""
2 g6 f  v9 |  d  F2 j                #不带typeword,删去typeword文件(之前定制的typeword)/ s' C  w, ~6 I; A  U
                rm -f /mnt/jffs2/typeword8 h$ M/ g; \# E' L' m  }
        else: u: m( m% P: S  Y1 r7 i9 ^0 h
                HW_Customize_Set_CFGTypeFile "$var_typeword") c; E. [) G( w* v
        fi
7 C. t: V. J( S) w        return 0
2 T# W: i: ^6 u, N8 L0 z}
/ j; C" U) ]% C1 ~# w" o/ i( H
! c  @& U; W, c* @% a( F# 参数检测! q& D9 r/ y+ L0 U* K# x: X" t
HW_Customize_Check_Arg()- ?0 c* w! Z6 q" K3 p
{
+ }% k/ R: U- i% A: r9 o( |" R        if [ -z "$var_bin_ft_word" ] || [ -z "$var_cfg_ft_word" ]+ ~/ z9 d9 o; @9 v4 ^
        then
4 _. @1 _  M$ m6 O( m. C3 I                echo "ERROR::The binfeature word and cfgword should not be null!"5 L" p. e7 h9 Z% B
                return 12 g. R( K/ Z- f
        fi% i+ w/ k' l0 _: l% O) X* Y( p. m

/ ~0 R! ^) @4 Y6 ]        return 0
. O. \1 }4 q0 L7 C4 k! H* F}' H  f$ {7 n" @# E2 ^4 U0 r
0 N2 N9 O0 J& T* ]/ g( |. F
# 如果是COMMON_WIFI ~COMMON定制,则将BinWord由COMMON_WIFI->COMMON,依然走定制流程
  c7 W2 {4 {6 V; Q0 ?: w6 \# 如果CfgWord以wifi结尾,则去掉"wifi"字符串7 X  `$ D& {% c1 m0 m# ]3 L: ?
HW_Change_Customize_Parameter()0 q( ^/ [; d4 O% m7 {
{/ t& P2 j2 \- b
        if [ "$var_bin_ft_word" = "COMMON_WIFI" ] ; then
+ N8 @: ?& S9 ^! [3 i        {( A3 [( v, I3 Q: B1 G
                var_bin_ft_word="COMMON"
, i" I9 @; J9 Q+ P% |        }! @0 J5 H0 M; ^* [; p$ W  l
        fi! k  d* g+ A7 E& h, X0 E- G
+ |+ S7 j9 a; ~$ B$ C# I
        #判断配置特征字是否以WIFI结尾,如果是则删除
' V; }, Y; z8 r. w3 E        var_cfg_ft_word_temp=`echo "$var_cfg_ft_word" | sed 's/WIFI$//g'`
# B. y4 q* \; D& I" C        if [ "$var_bin_ft_word" = "CMCC" ] && [ "$var_cfg_ft_word_temp" != "CMCC_RMS2" ] ; then
: v1 x* U- C: p0 _( |! r                var_cfg_ft_word_cmcc="$var_cfg_ft_word_temp"
% e+ x/ X) X9 O$ p: _, i                var_cfg_ft_word_temp=`echo "$var_cfg_ft_word_cmcc" | sed 's/2$//g'`% D- }7 [9 m% p7 I5 m
               
1 \2 L. b& b. J/ I; n        fi
! d* ?' q% c) r/ _  y# q       
' [6 v, p: r7 e' E8 U9 f
, G. @/ u0 N( B        shift 2
  M8 X  Y! m, o$ ?3 E& L+ m
& U1 s6 i+ b% K% l        var_input_para="$var_bin_ft_word ""$var_cfg_ft_word_temp ""$*"3 e& |& Y9 R& O! b6 m5 f

5 Y. B- B7 w2 b: w# R$ X        return 0
; W& K5 w( ~# Q}
2 \  [# p$ \% B. T1 a- N- K& j
# 如果CfgWord中去掉_SIP或者_H248字符
4 p. E1 R6 i1 w! ^7 M8 j+ L+ {HW_Change_Customize_ParameterForVspa()
' T* W6 ]5 G/ W, X2 U{
. a* f- Q  m2 s2 M        #如果配置特征字中没有_SIP或者_H248则直接返回,不显示
6 I9 u1 q* ?+ t$ _' A' N        echo $var_cfg_ft_word | grep -iE "_SIP|_H248" > /dev/null
6 x) K7 C1 {  ]8 j9 d$ }! y$ ~        if [ ! $? == 0 ]5 i2 \0 B* s- u$ c- t( W
        then0 V/ G: ~2 t& P+ s0 H) }) `$ Y
                return 0* a$ T0 I3 ~- }2 M, i
        fi
, r# G; m1 m" V7 f% a, |; q
5 `8 [9 l5 J" B* {; ]        #删除配置特征字中去掉'_'后字符,并重新构造配置参数,作为Customize程序的参数
3 l# q  E8 i$ q! }0 }* o/ W        var_cfg_ft_word_temp=`echo "$var_cfg_ft_word" | sed 's/_.*//g'`5 y' x) N+ w. _& l
        shift 2  #输入参数左移动2个' b; R& t* t4 A, e" n
        var_input_para="$var_bin_ft_word ""$var_cfg_ft_word_temp ""$*"2 K; x/ h$ V( a4 g* W
        return 0% F$ H  B' M5 M- }9 g+ E& T6 d
}
8 O, \; f9 ~5 M& l" r7 }1 N& z8 }& b& @4 g
#设置CHOOSE字段
$ |8 \  s# J) I9 l% h) |HW_Customize_Set_Choose()  {, u0 C0 g, l4 u
{
1 M# r1 F8 Z  W2 ^$ i2 w        #后面会进行检查,再次不检查boardinfo是否存在' t7 m6 [- C7 {( f2 C& s
        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/ ^% Z& l# r( U
        return 0
6 O  M- z0 D6 l4 P( D8 C}
  J* }, C. G# K2 T, N8 y
8 k, C! \+ F- s- }9 P6 M# 资源检测; i  I, b0 ^$ U/ `! ^  h  ?
HW_Customize_Check_Resource()
2 x6 H+ ^& o( |+ |+ ?+ ^+ k5 c{
$ `4 {, T9 {7 X+ S% ~' z) f; X+ F        #HGU需要关注免预配置定制,需要涉及CHOOSE_WORD字段修改,SFU则可以直接传入6 I) \- @, g. y, r3 C
        if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ] \/ Y5 s+ i& O, _& U0 |5 M
        || [ "$var_cfg_ft_word" = "UNICOM" ] \! ]& j+ l5 V* U8 w: `
        || [ "$var_cfg_ft_word" = "UNICOM_BUCPE" ] \) d5 H$ t+ Z* p' S
        || [ "$var_cfg_ft_word" = "UNICOMBRIDGE" ] \
; A4 e4 e/ z6 v, k        || [ "$var_cfg_ft_word" = "BZTLF2" ] \7 g9 P( h% T/ G# V3 i5 ~
        || [ "$var_cfg_ft_word" = "BZTLF2WIFI" ] \
5 M# p9 Z$ _; t4 a# m        || [ "$var_cfg_ft_word" = "CMCC" ] \! n# l/ ~! _5 ~/ U: r# C. O$ }
        || [ "$var_cfg_ft_word" = "CMCC_BUCPE" ] \
* Q7 V- o1 d3 h# }5 T        || [ "$var_cfg_ft_word" = "CMCCWIFI" ] \
8 K# F0 ?" l" w& j4 p8 e8 s5 b2 P        || [ "$var_cfg_ft_word" = "CMCC_RMS" ] \
) K3 Y" J  H9 ?# Z        || [ "$var_cfg_ft_word" = "CMCC_RMS2" ]  \
. u" S- o6 N: f5 ~& P1 Z, I        || [ "$var_cfg_ft_word" = "CMCC_RMS2WIFI" ]  \9 S1 S- J+ l3 f$ E& j: q& K( `
        || [ "$var_cfg_ft_word" = "CMCC_RMSWIFI" ] \
3 D5 W4 y; o1 D* `        || [ "$var_cfg_ft_word" = "CMCC_RMSBRIDGE" ]; then
9 j- p! S1 B7 K: B' O9 }8 y                shift 2
0 I. [* s$ H1 l$ O                if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ]; then3 b; A+ G% o3 i2 O7 G
                        var_input_para="$var_bin_ft_word ""$var_cfg_ft_word1 ""$*"
# B. W. f& \% k/ H, e" S9 q/ k- J" G                elif [ "$var_cfg_ft_word" = "CMCCWIFI" ]; then
" r/ @' w( U: w% l& T7 d' H* H( [                        var_input_para="$var_bin_ft_word ""CHOOSE_CMCC ""$*"       
) V4 x9 z7 s1 W% p                elif [ "$var_cfg_ft_word" = "CMCC_RMS2WIFI" ]; then
, b/ H6 F$ N2 S1 ~( C2 O6 [                        var_input_para="$var_bin_ft_word ""CHOOSE_CMCC_RMS2 ""$*"
. ?' k0 r1 ~- B, E# ~) L7 [                elif [ "$var_cfg_ft_word" = "CMCC_RMSWIFI" ]; then
, R/ x# c/ ~, Y1 G( W1 G3 P                        var_input_para="$var_bin_ft_word ""CHOOSE_CMCC_RMS ""$*", b: Y( Q: l( {
                elif [ "$var_cfg_ft_word" = "BZTLF2WIFI" ]; then2 j& ~+ s2 B6 S( G# @" V
                        var_input_para="$var_bin_ft_word ""CHOOSE_BZTLF2 ""$*"# _6 h9 n& B8 ?# d+ d0 N; d
                else: O0 l4 v& A6 k( e, S% }
                        if [ $var_is_HGU -eq 1 ] ; then/ C3 ]8 k5 m" S0 |0 E
                        var_input_para="$var_bin_ft_word ""CHOOSE_$var_cfg_ft_word1 ""$*"" B* J' \0 W$ s! T: D
                        else+ R5 L- l/ {) z4 N9 Q" T; A6 A
                                var_input_para="$var_bin_ft_word ""$var_cfg_ft_word1 ""$*"* c) I; w8 ^1 g  l/ V0 y" D
                        fi2 ?7 z1 y: b! c* v: d
                fi4 X8 ]6 X8 T9 Q! k9 X9 a. T
        fi
+ t/ Z1 I2 k# p5 W
. O2 d0 b" g3 E& g        #现在TELMEX只支持12个参数(customize.sh后面的),格式如下:/ t$ W1 ?9 q: `( B' s
        #customize.sh COMMON TELMEX SSID WEP_KEY PPPoE_user PPPoE_pwd TR069_user TR069_pwd WEB_pwd CLI_user CLI_pwd  WPA_pwd8 k/ e/ r% ]) r4 X0 ?
        if [ $var_cfg_ft_word == "TELMEX" ]
( H; S2 y  j. R, ^6 R        then# t6 ?9 D3 C. J" S1 D# U
                #对于之前的已经用5个参数定制的整机,返工场景(重新定制,要删除该文件,否则定制检查会失败)+ T3 U9 V' q* }
                if [ -f $var_customize_telmex ]
$ V6 q- R* Y$ H; K$ Q% g  I                then* ^8 q9 j; A* \2 a: q" \
                        rm -rf $var_customize_telmex" ]# g/ w* h: k
                fi0 D- [+ e, k: N" n+ j- ^) c3 z
                #只支持12个参数(除customize.sh以外的其他参数)
4 Q# z$ m! U- f7 `                if [ 12 -ne $var_para_num ]
7 I; g1 |) Y6 {9 m# _                then
& k' x9 L- S5 ]7 u0 u$ ]) l& R                        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 !"* ?7 Z+ K" y$ s( f# V2 z
                        return 1
  y: X* C( p7 R" q                fi8 J. N" i- z5 E- X
        fi
, Y: ?; ~) V# j6 R$ [8 R3 G. d/ m* `9 c8 E# M3 q3 S# S& z3 J  r: z
        # 调用Customize进程进行装备资源的校验, 把文件暂时写入typeword 暂时写入/mnt/jffs2/typeword 文件。 如果不通过文件传递,通过argv 传递% ~2 f4 v) I7 G4 F. J# |& Q
        # 需要函数扩展的函数有十个左右,且在Customize APP 中需要扩展解析该字段。
* z6 [* K" x1 L2 {. d        if [ -f /mnt/jffs2/typeword ]; then  R, @) G5 p( L% A
                cp -f /mnt/jffs2/typeword /mnt/jffs2/typeword_bak
4 d8 c7 d( l$ t$ T8 h4 d7 Y        fi
/ \( q7 @, x5 U6 U9 c        echo $var_typeword > /mnt/jffs2/typeword
2 q( s5 B! j4 G2 r' z6 u( C       
! _0 V/ @, e# ]' X( r7 V& C( a        #检测是是否在生产过程中写入specsn文件,重新返工需要将此文件删除。
. D5 A& e, l: R% T* D        if [ -f $var_jffs2_specsn_file ]- |/ u* c# c: d
        then ; C1 N4 B2 K8 c
                rm -rf $var_jffs2_specsn_file$ a% q! _3 J) z6 F* o; m
        fi" w- R2 Q7 {) R

: M& d4 I$ A0 ]; W4 G2 F$ Q9 }, D        if [ ! -f /var/customize_flag ]        ;then
1 T1 v: W0 }  x, `  \, D                echo > /var/customize_flag  J+ E& [! P7 @- K  R/ M0 N
        fi
- O' x. Q7 ~0 @, D, z        Customize $var_input_para
" X& {1 s! a" K2 A# T
$ M. y" D$ g* B# k+ t7 L        var_result=$?
( c  a& L7 g$ W+ I, A1 f: I/ i. a1 G/ T9 i, ^
        if [ 0 -eq $var_result ]7 e7 J' ~; V  B: ?
        then
) Y  b, _; ]/ U* H$ |% Q                #写boardinfo和文件+ D: g- M+ v: L+ e+ T
                HW_Set_CfgFile_Word
$ G5 h. T+ C: a1 U2 g8 k                rm -f /mnt/jffs2/typeword_bak
+ g8 h0 ]! }0 B8 E        else, u9 J8 \: s( A" h4 H
                #定制失败, 如果存在备份文件,还原备份
" [+ T# h& s  v5 S) P                if [ -f /mnt/jffs2/typeword_bak ]; then, s* k) j0 M$ |- n! t0 |
                        mv -f /mnt/jffs2/typeword_bak /mnt/jffs2/typeword$ I  d) u& O0 @! c
                else
5 z: X. v2 w' T9 ?                        #第一次定制失败
4 F4 m5 f0 Z' n! z1 ^" z( o                        rm -f /mnt/jffs2/typeword! v6 N# S. P, \, X; Q
                fi                3 j( V5 |4 {1 ]
               
0 s& u& d8 y* ?* u                if [ -f /mnt/jffs2/customizepara.txt ] ; then  \6 ]* t) f3 I0 r2 |* `
                        rm -f /mnt/jffs2/customizepara.txt1 v1 Q. n6 j9 @" ^& I. q/ d, I
                fi
( d* w- `+ b$ I8 Z, g/ `3 ^               
- r( }3 |3 _6 y9 s' D        fi2 z) p# F# N( k5 q9 K0 O4 K
" w# }% e  E9 W3 _3 @
        return 0, n; m  s  h4 o' N
}
. Y7 P. ^/ i" `' x( S! h3 P# j4 E
HW_Customize_Check_PCCWMacCheck()! v# |- s- E6 A) R
{
* B6 V* m- b2 L9 `, V, o2 ^        # 如果是PCCW,需要进行WLAN MAC的校验
. T  R& ~5 k7 J+ t" c% {* F        if [ "$var_cfg_ft_word" = "PCCW3MAC" ] || [ "$var_cfg_ft_word" = "PCCW3MACWIFI" ] \& P# y$ v; j9 }2 N4 Q8 W$ _
          || [ "$var_cfg_ft_word" = "PCCW4MAC" ] || [ "$var_cfg_ft_word" = "PCCW4MACWIFI" ]
% _1 }5 n* A/ g0 _+ p        then
) Q  X5 o5 `- s+ \( K. Q                pccwmaccheck $var_input_para
  }( ]; `* x' P5 z' b* O                var_pccwresult=$?' s& I9 ]6 t; c2 W4 x# o/ y" t
        else
- o* I0 B  Z  M5 x2 `                var_pccwresult=0
* \/ H/ J4 q3 q: ~# S        fi: k+ x+ j; `9 e% f5 A0 ?: F

, s' e5 j; D# V* Z! T2 E        return 0
5 s1 X' ~# y7 w( H1 {}# v/ }+ M; R  R' _0 ^1 R

9 G$ L7 q, U5 F- S6 X0 l#定制处理
" x* D4 `' j2 BHW_Customize_Delete_File()
  p9 J! _6 V% u2 L- @0 H{
. @7 Q  ^3 U; L/ A9 b/ ^        rm -f $var_telnet_flag/ o2 @. g. M* q+ o; w: x, ^4 r
        rm -f $var_boardinfo_bakfile
6 c/ D; c; X- k        rm -f /mnt/jffs2/smooth_finish7 o. l! Y& z( O
        return 0# g3 f! {$ A4 @2 O( \% }$ m7 ~& @
}
, A3 A: Q) C6 c$ K
1 V4 t* D- G4 K, Y/ Z# 结果输出8 J9 l4 m/ _1 _7 F
HW_Customize_Print_Result(). Z2 \( Y  n  i7 R
{
2 ]( \% ]8 T4 k8 q  D0 @2 g8 J        # 根据不同的执行结果,返回不同的错误内容; Y8 B0 D4 i: V, N: a- A! \2 k
        if [ 0 -eq $var_result ]
& I! C; t, C5 y; O. q# s$ h/ }        then
9 f" u( M3 z3 E+ I                #pccw3mac pccw4mac定制中需进行wlanmac的校验" u/ O+ Y! b6 K6 w! ^4 X
                HW_Customize_Check_PCCWMacCheck $var_input_para; W7 d" r; T- m. F9 F" v
                if [ 0 -eq $var_pccwresult ]- y' m1 ^3 T$ V7 h! Y) M, E" e6 S
                then
, N( `) r& L: v- C                        HW_Set_Feature_Word5 [1 ]8 T2 Q! S/ E: [0 D9 D
                        if [ ! $? == 0 ]
0 ?! t) e- s6 @& d: ^' D0 E                        then
9 ?& z8 E* T* I. q                                echo "ERROR::Failed to set Feature Word!"2 p% O5 y1 N+ l
                        return 1* M& G* L3 `' c$ ~
                fi6 {; Z7 ], d& X$ Z+ t# \
                elif [ 1 -eq $var_pccwresult ]
1 J; v. n- p5 o3 ]. C7 Z1 c# L                then
$ E" S" P) t  O                echo "ERROR::input para number is not enough!"
; x1 u% O+ b& V                return 1. F& k: L. J0 R# i# f. r2 R5 _
                elif [ 2 -eq $var_pccwresult ]
/ s9 k; A8 H- ?% {; M3 v8 P  l                then
" x' m, U7 a& o  \! \7 }! P4 c                echo "ERROR::SSIDMAC fail!"
( \" U" o2 V( J- J9 u: A                return 18 H4 u& s' `% G- O
                else+ ]9 |0 }& [! t8 l2 L  L
                echo "ERROR::customize fail!"
" Q/ R8 e) ~; _3 Z0 C/ b                return 1( D& x5 U7 G) s; ~$ z
                fi
& m7 j: ^+ H0 F/ q                return 0
# s3 `/ R5 y7 I        elif [ 1 -eq $var_result ]
" q5 [/ N6 s7 c# k6 c7 [8 ~- Q        then
$ H- {( i" k0 V! J1 R                echo "ERROR::input para number is not enough!"4 A$ [5 D2 a, x- J; I" p
                return 1
$ u$ y7 _' Q+ ~' W        elif [ 2 -eq $var_result ]* ~) C2 Q' J% ?' P  S% G
        then
8 A4 c8 S7 D; c  U; |                echo "ERROR::Updateflag file is not existed!"2 Y" a: D- [7 I; d
                return 1
# Z5 _0 N! e( u' }% K        elif [ 3 -eq $var_result ]
4 n6 Q, N) }5 F: `4 l        then
* o  A/ |# _7 C7 g6 `! k3 \                echo "ERROR::config tar file is not existed!"7 t. _, |1 T# _) `% W1 q" M
                return 12 I# ]/ ?; E5 A" D5 L" W: x
        elif [ 4 -eq $var_result ]
1 n. w9 Y3 ]# G        then
0 Y  F. Q7 r$ O% m                echo "ERROR::Null pointer!!"
# Q; d& W" _! T4 r! ?                return 1
* w, Q4 c* M& A4 U* h        elif [ 5 -eq $var_result ]
% c0 m, Z5 h2 N( H4 \" Q/ U# \8 i- V        then: o9 Y0 u; T2 H0 @* |
                echo "ERROR::XML parse fail!!"
2 S3 _1 \5 w4 Y/ i# E                return 1! M. P: u/ ]. _1 L
        elif [ 6 -eq $var_result ]
4 u" @5 u) ]4 a3 H. O        then5 X* Y+ F/ A  E7 h+ y
                echo "ERROR::XML get node or attribute fail!"; [4 n/ g7 \8 @! C+ @
                return 16 A" ^& ?  U5 p4 f0 E
        elif [ 7 -eq $var_result ]
3 L0 h* B% @" Z- e- G. ?7 h1 [8 P        then6 ]1 U8 J! g5 ~4 S- W
                echo "ERROR::XML get relation node fail!"
: y8 _# O$ f! |/ w- g' z                return 1: {) |$ Z2 b( M# Q) T$ ?% Y
        elif [ 8 -eq $var_result ]
7 p6 `& w" e6 Y8 \8 F+ {        then, S8 h$ `( J7 n5 V% Q( I
                echo "ERROR::Spec file is not existed!"
2 N) B# m2 Z2 f- I3 \+ g6 s- u                return 1
- p! `0 A3 w/ z) j" f# z7 ?1 p        elif [ 9 -eq $var_result ]9 ~  P: }; k4 {/ f6 J# F- m
        then
6 U8 n1 g; _3 D2 N0 N4 X" t$ O                echo "ERROR::Set bin word fail!"" t1 z2 Z& N/ v. g- t' b
                return 1* E% i% K& Y! z2 t% y, @
        elif [ 10 -eq $var_result ]0 |; N+ V3 C% B. W
        then, }) S9 L2 L) a2 |( F% r' ?* V+ {* G3 I
                echo "ERROR::Set config word fail!"6 F# d" j% w3 Z& h6 k
                return 1
' q8 D7 `0 `3 r* i) o. F: ^        elif [ 11 -eq $var_result ]
/ v" \+ \+ M8 `- q        then: U# q2 n! H( U0 f5 q; E, C& U
                echo "ERROR::Uncompress tar fail!"5 G) Y  }, z2 i" _, T
                return 1& }/ e; @1 D) o" e
        elif [ 12 -eq $var_result ]
2 ~4 f8 [9 Q, F        then
( W3 s7 W7 i, G. C+ F2 X. m& [( N                echo "ERROR::Config file is not existed!"
0 _$ y2 n4 c6 W: h0 x% L8 |, l% Q                return 1* W+ M4 S" J  h, U0 P8 Q& o1 r9 [
        elif [ 13 -eq $var_result ]
* j, U" a2 A8 h) p, ]6 X- Z        then
$ f$ b% O: y  @& \$ l                echo "ERROR::Recover file is ont existed!"
3 f0 }, j, ]( g  Q$ y4 ]) l" {$ K% s                return 1% ~1 O; x8 J( j0 I+ |
        elif [ 14 -eq $var_result ]
0 O9 b& V6 [5 S  R* a        then
4 S, }! x: i" \' {- L2 ^* x1 j                echo "ERROR::Run script fail!"! y$ y: p% N1 \+ \
                return 1
5 h( B  h9 `3 x, |7 I        elif [ 15 -eq $var_result ]+ v% |4 Z! B& W+ J5 Z! Q' ~
        then
! a  X; l6 u: j# l) L5 }& L                echo "ERROR::Create new recover config file fail!"% p! j2 [4 R; j" H6 ^2 p5 d
                return 1
- {5 q7 U' S! r        elif [ 16 -eq $var_result ]
% J7 N, n9 P7 h/ _        then3 e3 ^7 d1 E% J1 Y; t3 V8 }
                echo "ERROR::Create old recover config file fail!"
7 z$ G, M' U/ `# Z                return 1
& M- T, C0 w# Y! t  E9 E5 R7 Y        elif [ 17 -eq $var_result ]
" N! `, Q' G2 P# E, R& p+ X2 C2 k        then
! D# Y( d, v" w# ~0 m9 a9 t6 r                echo "ERROR::Copy spec default ctree fail!"
' ]# C0 D9 l1 m/ q                return 14 I! d; |5 l% z9 t& n
        elif [ 18 -eq $var_result ]
/ d$ J. k  i- b/ R7 k2 s        then1 W, X$ C* L# M7 B6 c# H" ?
                echo "ERROR::Check Choose Res fail!"0 ?$ k% g% @9 Q6 t4 @. `
                return 1
: i$ ^+ o2 p7 v  V7 ?        elif [ 19 -eq $var_result ]
( c8 O. l/ v$ _" \: q        then. H. @" s2 V  q
                echo "ERROR::Resolver customize file fail!"2 I1 P5 C: \. c: M) P0 h" R( }
                return 1; G% \: U1 V' F; k8 U
        else5 A* @6 Y4 x' M4 l# Z
                echo "ERROR::customize fail!"2 L, g; z) q" w9 P# o( I! o
                return 1! Y7 m7 A1 A  U) x/ h! y
        fi
$ }8 V9 Z$ k* N( L  Q8 P) A! }
1 ^7 S, e' {. I# X        return 0
; P$ R7 B) Z. E}
2 L  v7 \( \9 x: l3 T9 r( U9 Y. @) h8 i" g% b
#HGU才支持免预配置,在此做判断* i# W# m. G: ~( C, u- f
HW_Customize_CheckIsHGU()
) c/ l" a7 m8 W  ]2 K{; U2 g4 T) `) ^9 v( J, Y
        cat /proc/wap_proc/pd_static_attr | grep -w pdt_type | grep HGU > /dev/null0 K" s0 m+ ~- B6 W! m% P& G2 Q
        if [ $? -eq 0 ] ; then' `9 k% V, N8 y4 A/ w
                return 1
4 o5 W& j7 v* Y& H$ _* V. k: i0 N9 r        fi
5 l" h: h( ]2 S6 ^; g" ?( l0 s/ e# ^$ X! t
        return 0+ m/ D% t% a  T  H( p1 K
}! l0 h  s- c" X7 }6 t

8 \* e6 X4 O: b8 _0 Y#Java进程占用CPU过高,导致定制超时" U: `/ N3 h$ @: u4 j0 _! W
HW_Customize_ReleaseResource()8 Y* M3 L% K# R  X8 }6 Y) w! b; V3 J
{: w$ z1 u! v; {4 j, r( b
        procid="";
4 Q& F* p. l0 q9 B3 I/ q        % F# K, t0 H7 }
        if [ -f /bin/osgi_proxy ] ; then, y8 W- _% {- h( P; X1 j
                echo > /var/kill_java& u( y/ L2 i" ]  f9 j; }
               
# d& l( }  g; q  m                procid=`pidof procmonitor`   . y: ^2 p% X3 j6 b. U
                if [ "$procid" != "" ] ; then0 S1 h4 i! F7 \' n' `9 S
                        kill -15 $procid                       
6 x. e0 W9 b$ O* ~8 E                fi
6 }. h1 {! U8 Q& d7 `+ v5 Y4 k( i0 U* K+ ^  i) a4 R
                procid=`pidof osgi_proxy`                    
. V; }+ j, e: F                if [ "$procid" != "" ] ; then# N' y1 k6 b; y" M4 g' A" i2 k
                        kill -9 $procid7 R$ b$ p4 G7 X- w
                fi        * _* U# p  |& Q; k
                : S9 C; i$ K7 e3 X9 W! h; S1 m
                procid=`pidof java`
$ @4 D1 V( k, x  r# i                if [ "$procid" != "" ] ; then
% y+ @) V( y$ B: I                        kill -9 $procid
  [) n1 w+ m- ?4 P9 R  i                fi                                                               
5 ~* g, B' ?8 |+ X  m        fi
8 \; w; v( t7 h2 S1 J  O# t8 B}
8 e0 P5 a7 X0 B% [% h3 i- F( \  {6 m7 n! ?0 E
1 {& s% i$ b8 [: J
#echo /proc/pdt_proc/save_boardinfo to save boardinfo for add chooseid  B6 d/ g  Z+ n9 M& |/ P6 U: P
echo "1" >  /proc/pdt_proc/save_boardinfo$ t$ ?7 j2 R9 G+ V4 i

' ]+ b  \0 `, x0 z7 x! K. ~#参数检测:至少应该包含BinWord&SpecWord
- f* F. B8 k. c9 mHW_Customize_Check_Arg
3 C2 x6 z8 h- v7 x/ w7 ][ ! $? == 0 ] && exit 10 @7 G5 c4 G8 c% \9 U! f  P

8 B6 K: N0 ~6 i, k- KHW_Customize_ReleaseResource
4 d% w; y2 U" @) Z$ e. E6 |! |+ y$ a
#参数处理5 a8 }" m6 N; |
HW_Change_Customize_Parameter $var_input_para
) U8 c2 c# y% R/ F1 @9 G$ @+ C/ Q: n0 N
#参数处理,主要是将配置特征字中的_SIP和_H248进行过滤3 o8 H  ]; r9 y( G
HW_Change_Customize_ParameterForVspa $var_input_para
6 J: S: V) u& m' m1 L7 @5 d, G
#HGU才可以免预配置定制,免预配置定制才涉及CHOOSE_WORD的处理
; v3 a, d9 w! t/ N: D+ @: M/ ?HW_Customize_CheckIsHGU2 ^3 f% C# P# Y' S; T5 e8 {. x, M5 N
if [ $? -eq 0 ] ; then9 R0 V5 K' K/ P& c
        var_is_HGU=0/ c4 O' [& z# d$ k) W5 {
fi0 A/ h. j+ R2 y/ I3 Q: [+ d4 r

/ `* b- v% a: |1 g6 O" M4 l#免预配置模式,添加NOCHOOSE字段,并初始化为CHOOSE_XXX) k" \5 p7 J7 j
if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ] \* ~: w* `- a0 Z6 x2 L
|| [ "$var_cfg_ft_word" = "UNICOM" ] \
5 i6 v! x8 L& Y& P|| [ "$var_cfg_ft_word" = "UNICOM_BUCPE" ] \
& ]$ {2 f- o, M% l. t# s|| [ "$var_cfg_ft_word" = "UNICOMBRIDGE" ] \- H7 [) w$ e% L  }' M0 F6 e' p
|| [ "$var_cfg_ft_word" = "BZTLF2" ] \5 U7 F1 u1 ~* q  [
|| [ "$var_cfg_ft_word" = "BZTLF2WIFI" ] \
( N" h  ^8 p1 `! }. W|| [ "$var_cfg_ft_word" = "CMCC" ] \3 A% E5 z+ }: I& c1 _* g
|| [ "$var_cfg_ft_word" = "CMCC_BUCPE" ] \' |. i# n& b5 k
|| [ "$var_cfg_ft_word" = "CMCCWIFI" ] \( m; ^9 v+ p' b
|| [ "$var_cfg_ft_word" = "CMCC_RMS" ] \3 y5 v& }, v8 |( {- G) a
|| [ "$var_cfg_ft_word" = "CMCC_RMS2" ] \4 r0 z) ?! ~; C. t
|| [ "$var_cfg_ft_word" = "CMCC_RMSWIFI" ] \. _: A; K" r. l8 K* u% Y' l
|| [ "$var_cfg_ft_word" = "CMCC_RMS2WIFI" ] \5 J3 F' ?7 Y6 g
|| [ "$var_cfg_ft_word" = "CMCC_RMSBRIDGE" ] ; then3 y' |2 l# M! u- k% b  _
{: R7 R  T+ n9 i3 J+ h7 [& P
        #HW_Customize_Add_Choose
( P9 C* T' b8 `3 P# g3 Z9 h        if [ "$var_cfg_ft_word_choose" = "CHOOSE_" ]; then
% j4 T! T4 c: G$ S) F2 v/ H                HW_Customize_Set_Choose "$var_cfg_ft_word"" O( j" X. Z: R+ a% |6 k; G$ O; r
        elif [ "$var_cfg_ft_word" = "UNICOMBRIDGE" ] ; then
6 u2 i% r/ {3 ]) Y1 Z: h: ^                HW_Customize_Set_Choose "CHOOSE_UNICOM"        # y) W$ ]% d5 d& P; \2 F
        elif [ "$var_cfg_ft_word" = "BZTLF2WIFI" ] ; then4 U& X; H9 ?& p! @
                HW_Customize_Set_Choose "CHOOSE_BZTLF2"; L; i2 f! A' L4 l5 [9 @0 p8 \' A
        elif [ "$var_cfg_ft_word" = "CMCC_RMSBRIDGE" ] ; then5 k5 T" d; d) L) A
                HW_Customize_Set_Choose "CHOOSE_CMCC_RMS"  a" F; T% O: e6 F8 d
        elif [ "$var_cfg_ft_word" = "CMCC" ] ; then, U( ^% ]' K( s9 G
                HW_Customize_Set_Choose "CHOOSE_$var_cfg_ft_word"
$ \! c0 Y, m: X4 a8 v. r. r8 n        elif [ "$var_cfg_ft_word" = "CMCCWIFI" ] ; then9 v% `1 h2 A- T6 v6 y
                HW_Customize_Set_Choose "CHOOSE_CMCC"% X- l! D9 o+ S5 T9 e- K# d
        elif [ "$var_cfg_ft_word" = "CMCC_RMSWIFI" ] ; then
- Y! \& a3 e# F$ G                HW_Customize_Set_Choose "CHOOSE_CMCC_RMS"; [5 ~' ~9 t' \2 @
        elif [ "$var_cfg_ft_word" = "CMCC_RMS2WIFI" ] ; then/ Z0 w$ k$ U$ }
                HW_Customize_Set_Choose "CHOOSE_CMCC_RMS2"# t' c+ ~) e! R4 y( i- C
        elif [ "$var_cfg_ft_word" = "CMCC_BUCPE" ] ; then
4 h0 S  q' ?# K$ Q* I  x* ]                HW_Customize_Set_Choose "CHOOSE_CMCC_BUCPE"
2 i+ p% J- a" ^* ~3 V' `; o  i        elif [ "$var_cfg_ft_word" = "UNICOM_BUCPE" ] ; then9 D# u# f6 M+ ~$ f& A
                HW_Customize_Set_Choose "CHOOSE_UNICOM_BUCPE") ], A( ~. S; |$ g( a+ u1 `" Q
        else% ^# |0 z  S9 [7 Z
                #COMMON/UNICOM定制只有HGU支持免预配置% O6 ^& H; ?  _
                if [ $var_is_HGU -eq 1 ]; then
6 w. y$ R. I7 F9 P5 a                        HW_Customize_Set_Choose "CHOOSE_$var_cfg_ft_word"0 t& U/ T: f! l; b5 r+ @; }
                else
2 q- k" M3 t# e  I                        HW_Customize_Set_Choose ""
3 Y* ^6 ~8 }3 |' A* V3 U; r3 }9 \                fi4 e" a2 T5 T. ]" C
        fi- \7 A+ I, E7 L# A+ b
}& p2 z# z8 `0 q* p/ o, p6 u
else9 F  h! H, o: G& b' C  e5 N/ p! @% X
{6 P% A9 e+ k5 ]5 ~
        HW_Customize_Set_Choose ""
* ^: A) x: m* }; N* o}" `3 Y" N6 {2 x* W) U' U/ F
fi. \7 U7 N# u# v* \+ z, A# }, q

- p! J6 G. r# C) VHW_Customize_Check_Resource $var_input_para
: u7 Y- f* ~0 I, c[ ! $? == 0 ] && exit 1' ?/ U5 F: L* ~' k& N! y/ c, R( o

6 n* K; H6 ]: N2 u# 结果输出" B+ T6 r0 B; p* i7 D
HW_Customize_Print_Result $var_input_para; s7 b& r( O8 {( T% U  v
[ ! $? == 0 ] && exit 1
$ g$ |% ?# S# @. i9 G5 K
; c, O, _; p* ~& {5 Q2 F; g#定制处理
( y/ g; w7 [' C& \3 rHW_Customize_Delete_File
7 Z2 G3 ?- q0 J# Aecho > /var/notsaveboardinfo
! w, \* g; [: N' S3 gsync# E) c; O* T& H/ q4 ?9 n+ X4 J  d
echo "success!" && exit 0
% E0 e8 w+ O( V% e/ T, _
4 n2 N5 u: G: D! b -----------------------------------------------------------
8 c' f; T8 b; q( e! E# d
6 D1 U$ ^- ]% Z8 L2 C3 E; j附上下载地址
3 [4 T+ {% f% f3 X+ t* b; v9 L6 T' n7 n

本帖子中包含更多资源

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

×

点评

很强大的脚本,需要恢复定制界面的少了很多弯路~感谢楼主!  详情 回复 发表于 2018-4-6 10:36
 楼主| 发表于 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_pwd4 p% B- d. I7 V3 R1 @) a3 g1 F
这个是光猫内部定制的参数命令

点评

麻烦问一下,执行customize.sh脚本,后面带的这些参数应该怎么填写,例如我要恢复成电信界面?  详情 回复 发表于 2021-6-2 21:04
发表于 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执行脚本。! Y; @! _/ Z, m1 K5 _
我用Notepad++修改 后无法执行  都是添加的简单的命令 rm,tar,cp之类的基本命令 没发现语法错误
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|宽带技术网 |网站地图

粤公网安备 44152102000001号

GMT+8, 2024-4-29 01:28 , Processed in 0.039898 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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