本教程,实现将shell脚本和需要安装的软件包制作成二进制bin文件
1、编写shell脚本
这里有个安装jenkins的shell脚本,脚本内容如下:
#!/bin/bash
sed -n -e '1,/^exit 0$/!p' $0 > jenkins.tar.gz 2>/dev/null
read -p "是否安装jenkins[Y/N]:" YesNo
if [ $YesNo == Y ] || [ $YesNo == y ];then
echo "Jenkins will be installed!!!"
tar zxvf jenkins.tar.gz
rpm -ivh --test jenkins-2.176.1-1.1.noarch.rpm
else
echo "Nothing was done."
fi
exit 0
说明:
sed -n -e '1,/^exit 0$/!p' $0 > jenkins.tar.gz 2>/dev/null 这个很关键了,就是将shell脚本和压缩文件分解开,将所有安装需要的软件程序导出到jenkins.tar.gz
exit 0 一定要加,不然执行二进制文件的时候,在执行完脚本命令,还会执行下面的压缩文件。什么后果你可以试试
2、准备依赖软件包
将所需要的jenkins的rpm包压缩成jenkins.tar.gz文件
3、制作二进制文件
cat installjk.sh jenkins.tar.gz >jenkins.bin
4、测试一下吧
# sh jenkins.bin
是否安装jenkins[Y/N]:y
Jenkins will be installed!!!
jenkins-2.176.1-1.1.noarch.rpm
warning: jenkins-2.176.1-1.1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID d50582e6: NOKEY
Preparing... ################################# [100%]
package jenkins-2.176.1-1.1.noarch is already installed
5、提取出bin文件中脚本内容
方法一
此方法前提是要知道脚本最后一行内容,这里最后一行是exit 0
sed -n -e '1,/^exit 0$/p' jenkins.bin方法二
使用strings命令
# strings jenkins.bin |more
#!/bin/bash
sed -n -e '1,/^exit 0$/!p' $0 > jenkins.tar.gz 2>/dev/null
read -p "
jenkins[Y/N]:" YesNo
if [ $YesNo == Y ] || [ $YesNo == y ];then
echo "Jenkins will be installed!!!"
tar zxvf jenkins.tar.gz
rpm -ivh --test jenkins-2.176.1-1.1.noarch.rpm
else
echo "Nothing was done."
exit 0
]I&l
K1CI
&&Y d
NKxPfAD
p9hgBbjJ
Y:Kg
1NL#
%~L
RRd8
........