服务器维护过程中,通过一些shell脚本来辅助重复的操作,会大大提升自己的工作效率
但是自己写的脚本又不想让人直接看到明文,这时候怎么办,shell脚本加密的需求这时候就来了。
安装 shc,此工具可以将shell脚本转换为c语言并且编译成二进制。
#centos系统安装shc
yum install epel-release
yum install shc
#ubuntu系统shc
apt update
apt install -y shc
#对shell脚本文件加密
举个例子:创建一个test.sh
vim test.sh,内容如下:
#!/bin/bash
echo 'hello,world'
保存!
#动态编译:
shc -r -f test.sh # 如果你在系统A上加密test.sh,然后将其复制到系统B运行,不加-r可能会报错(如找不到依赖库),加上-r后,脚本会动态解析目标系统的路径,提高可移植性。
test.sh.x.c #转换后的C语言源码
test.sh.x #C语言代码编译后的可执行程序
此时执行./test.sh.x 就会执行脚本中的内容
#静态编译:
可复制到任意 linux 主机兼容运行,静态编译后文件会变得大很多。
CFLAGS="-static" shc -U -r -f test.sh -o test
如果发现错误:
/usr/bin/ld: cannot find -lc
说明:在静态编译时,需要libc.a,但系统可能未安装静态库
解决方法:
# RedHat/CentOS
yum install glibc-static
# Debian/Ubuntu
apt install libc6-dev
安装完后,再次执行
CFLAGS="-static" shc -U -r -f test.sh -o test