一、背景介绍
DBA日常更新insert|update较多,耽误很多时间。开发出工具虽然对脚本内用户密码进行了加密加严操作,但是仔细查询内部逻辑还是可能泄露密码的,今天用gzexe方式对shell脚本加密。
二、开始测试
1.找一个测试脚本执行。(线上脚本内容不便公布,自行编写测试脚本。)
2.进行加密操作 [root@]#gzexe Automatic_update.sh Automatic_update.sh: 63.0% [root@]#ls Automatic_update.sh Automatic_update.sh~ bak conf SelectDBname.sh sh_lib
3.加密后的脚本内容
[root@ ]#cat Automatic_update.sh
#!/bin/sh
skip=44
tab=' '
nl='
'
IFS=" $tab$nl"
umask=`umask`
umask 77
gztmpdir=
trap 'res=$?
test -n "$gztmpdir" && rm -fr "$gztmpdir"
(exit $res); exit $res
' 0 1 2 3 5 10 13 15
if type mktemp >/dev/null 2>&1; then
gztmpdir=`mktemp -dt`
else
gztmpdir=/tmp/gztmp$$; mkdir $gztmpdir
fi || { (exit 127); exit 127; }
gztmp=$gztmpdir/$0
case $0 in
-* | */*'
') mkdir -p "$gztmp" && rm -r "$gztmp";;
*/*) gztmp=$gztmpdir/`basename "$0"`;;
esac || { (exit 127); exit 127; }
case `echo X | tail -n +1 2>/dev/null` in
X) tail_n=-n;;
*) tail_n=;;
esac
if tail $tail_n +$skip <"$0" | gzip -cd > "$gztmp"; then
umask $umask
chmod 700 "$gztmp"
(sleep 5; rm -fr "$gztmpdir") 2>/dev/null &
"$gztmp" ${1+"$@"}; res=$?
else
echo >&2 "Cannot decompress $0"
(exit 127); res=127
fi; exit $res ~1±Automatic_update.shԖ[O~߽ScRem¯
ֻm҈RڄRZ5R!Q£^͟)»§????Lܔj#YZϙ????fN֫ɂ¬%
~????????ؼµ#®ƚ®n¸ګ髜{n�ꬬSu????¶q????????ᐻ¿׆IJ!ȖUVĉǐ$¬2¨«l´d]>b٢£6????¼ݳh±¬G ????¹9©+De"NCUwL0±mDz±r2ª
????
읾鞝????ˢ¦]
<\¼]&Z#¦-Q%E-d配P05Ϥ¸毼1:쮟<ݼ�¼®̻�°p·þ̮鱐³½5x¼¬k4G-3Ƨ²w?????m={)5ƲWٮuaª⡜xp
±vņr#¹\
Ϻ$$½5Gtڱ@
#????¶˗惸????????eَS䛢¤£e¨v³¤▯G%=PD????¡????Gz:Q¥誎????þ(¼ғǂ>>ȵ%̐5LNQ¦E٨✒EޑlZ????HJOV¤T ªO*r!)陑.QbȚ5畒Z%!K1©TʓR| _R!e
߫알®????N%\¹7a=¹y XБ v*;ן²ʨKeª·k¤5²ـK§*،¿2#????텗%3%
ª(§e5avº¯¦¬¡¿ٝs4¹5R2
ݝº\????
tі=g轺gL8ÿ¢ɾ????岙X???? Zºc????¦7
¥A????ٔ듊????ҵ[m????ޢ????<????¿Dz~®YFL\T¥>ʑɷ????¾2
@,????
????S(Ywﺙ????????I????½/y̛º£
????????ȴ Ύ]>©¦/????ɷfrþ
Ǡڃ ¯ۂHBVZHϛˡ????¦īoC(
²";£(mҳƷ*ğ쑿
ǽþ????l0????½똸윴¡½9˵¯B????¡???? Dφ
ߪ»????ÿy³¾岨Chιٿ¡o¾
4.再次执行内容不变,并确认加参数一样可以执行。
5.进行解密 gzexe -d Automatic_update.sh 查看确认脚本内容无误
6.再次执行确认,发现完全没问题。 #另外一种shell加密方式shc,自行研究。