在shell脚本中嵌入文件


=Start=

缘由:

之前有碰到过将文件嵌入shell脚本的情况,但没有细究,最近看到一篇文章的时候想起来了,就顺着学习一下,说不定以后用得着。

参考解答:
#!/bin/bash

PATH=/usr/bin:/bin
umask 022
md5=0ee8c59a12d99fdfd1e95bfda6938e86

pre_install()
{
    echo "准备安装环境(略)..."
    mkdir ./install.tmp.$$
}
extract()
{
    echo "从脚本中提取文件"
    line_number=`awk '/^__BIN_FILE_BEGIN__/ {print NR + 1; exit 0; }' "$0"`
    tail -n +$line_number "$0" >./install.tmp.$$/extract.$$
    # tail -n +$line_number "$0" >./install.tmp.$$/extract_tmp.$$
    # base64 -d ./install.tmp.$$/extract_tmp.$$ >./install.tmp.$$/extract.$$
}
check_sum()
{
    if [ -x /usr/bin/md5sum ] && [ -f "install.tmp.$$/extract.$$" ]; then
        echo "正在检查md5......"
        sum_tmp=($(/usr/bin/md5sum install.tmp.$$/extract.$$))
        if [ $sum_tmp != $md5 ]; then
            echo "文件md5不一致,请检查文件完整性,退出!"
            exit 1
        fi
    else
        echo "找不到md5sum命令或文件未提取,退出"
        exit 1
    fi
}
install()
{
    echo "安装中(略)..."
}
post_install()
{
    echo "配置中(略)..."
    echo "清理临时文件"
    rm -rf install.tmp.$$
}

main()
{
    pre_install
    extract
    check_sum
    install
    post_install
    exit 0
}

main

__BIN_FILE_BEGIN__  #这行下面接二进制文件
# ......
参考链接:

=END=

, , ,

《“在shell脚本中嵌入文件”》 有 1 条评论

  1. 【shell】使用shc工具加密Shell脚本
    `
    shc是一个脚本编译工具, 使用RC4加密算法, 它能够把shell程序转换成二进制可执行文件(支持静态链接和动态链接)。
    `
    http://vinc.top/2017/03/15/%E3%80%90shell%E3%80%91%E4%BD%BF%E7%94%A8shc%E5%B7%A5%E5%85%B7%E5%8A%A0%E5%AF%86shell%E8%84%9A%E6%9C%AC/
    https://github.com/neurobin/shc
    https://neurobin.org/projects/softwares/unix/shc/
    https://neurobin.org/projects/softwares/unix/shc/man.html

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注