shell程序中经常会有不能让人看到的密码,找到个工具叫shc可以编译加密shell脚本。

1. 安装shc

 
  
  1. yum install shc -y 

需要安装rpmforge才能yum安装shc,安装方式见:http://wiki.centos.org/zh/AdditionalResources/Repositories/RPMForge?highlight=%28rpmforge%29

2. shc使用

a. 选项

 
  
  1. shc [ -e date ] [ -m message ] [ -i iopt ] [ -x cmnd ] [ -l lopt ] [ -ACDhTv ] -f script 

说明:

-e date:设置过期日期,格式:dd/mm/yyyy

-m message:指定过期时提示的日期

-f scriptname:指定要编译的脚本名

-r:可以在相同版本系统的不同机器上执行

-v:显示编译的详细信息

b. 使用

 
  
  1. shc -r -f scriptname 

执行命令后会生成文件:scriptname.x.c scriptname.x

scriptname.x.c:生成scriptname.x二进制文件的源文件,该文件为C语言的源代码,可以打开文件查看,里面就是linux下C的代码

scriptname.x:二进制可执行文件

c. 指定过期时间和信息

 
  
  1. shc -r -e dd/mm/yyyy -m "message" -f scriptname 

生成的程序将在dd/mm/yyyy日期过期,那时候执行时会提示:message

d. 动态库

查看

 
  
  1. file scriptname.x  
  2. scriptname.bash.x: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped 

注意:dynamically linked(uses shared libs)使用的是动态链接库,不能跨平台使用

可以使用ldd查看具体使用的库

 
  
  1. ldd scriptname.x 

 如:

 
  
  1. ldd mysql_backup.bash.x  
  2.     linux-vdso.so.1 =>  (0x00007fff019ff000)  
  3.     libc.so.6 => /lib64/libc.so.6 (0x0000003a3c200000)  
  4.     /lib64/ld-linux-x86-64.so.2 (0x0000003a3ba00000) 

 e. 静态库

 
  
  1. CFLAGS=... shc -r -f scriptname 

CFLAGS中指定:-static选项等

以上参考了下文:

http://sookk8.blog.51cto.com/blog/455855/499002