shell脚本制作bin包.docx_第1页
shell脚本制作bin包.docx_第2页
shell脚本制作bin包.docx_第3页
shell脚本制作bin包.docx_第4页
shell脚本制作bin包.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用shell脚本制作可执行安装程序制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了。一般这个后部分的文件是 个压缩包,那样,就能够打包很多文件了,在脚本中解压出来即可。这就是Linux那些bin、run等安装脚本的简单制作了。如在linux 下制作二进制 .bin 文件的制做方法:就是使用cat 命令将执行脚本和打包文件同时放到一个.bin的文件里。这样安装的时候只要使用一个包,直接执行该包即可安装完毕,简单方便。下例就是一名为install.sh脚本,它实现以下功能:l 自动创建用户及用户组l 自动检查网络环境并安装环境包所需要的支撑环境l 显示安装进度l 自动检查并配置防火墙l 自动安装环境包l 自动增加自启动脚本1. bin文件制作步骤a) 打包文件tar cvf myapp-env-1.0-linux-x64-installer.tar.gz myapp-env-1.0-linux-x64-installer.tarb) 编写脚本内容见install.sh脚本内容节c) 可执行安装程序制作方法# cat install.sh myapp-env-1.0-linux-x64-installer.tar.gz myapp-env-1.0-linux-x64-installer.bin这样就生成myapp-env-1.0-linux-x64-installer.bin的安装文件,该文件是由shell脚本和二进制合成的。前半部分是脚本后半部分是二进制文件,用strings等 二进制查看命令可以看到。2. 安装chmod 755 myapp-env-1.0-linux-x64-installer.bin./ myapp-env-1.0-linux-x64-installer.bin3. install.sh脚本内容#/bin/bashPATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bincurdir=pwdinstalldir=/myappmyappuser=myappenv_name=myapp-env-1.0-linux-x64-installersum=0echo -echo Welcome to the myapp-env-1.0 for linux-x64 Stack Setup Wizard.echo -echo echo Installation folder : $installdir echo -echo checking environment. echo #检查网络环境checknetwork ()netstat=$(ping -c3 |grep transmitted |awk print $4)#检查网络状态、判断支撑软件是否安装,若没有安装则自动安装。checkenv ()rpm -qa /tmp/rpmlist.txtfor soft in $softlistdogrep $soft /tmp/rpmlist.txt /dev/nullif $? -ne 0 ; thenecho $soft is not installedif(netstat=0) ; thenecho ping -c3 ,failed . Please check networkexitelseecho install $soft . yum -y install $soft | tee -a install.logfielseecho $soft was installed firm /tmp/rpmlist.txtdone#检查防火墙配置,并自动配置防火墙策略Config_Firewall ()echo checking and configuring the firewall rule .echo for port in $myappportdoiptables -L -n |grep :$portif $? -ne 0 ; then if $port = 8080 ; then/sbin/iptables -I INPUT -m state -state NEW -m tcp -p tcp -dport $port -j ACCEPTelse/sbin/iptables -I INPUT -p tcp -dport $port -j ACCEPTfiecho $port is not in iptables, the Port: $port is openedelseecho $port is existsfidone#增加用户、密码和用户组、并修改安装目录的属主adduser()echo -echo creating UserGroup: $myappuser and username: $myappuser and default passwd: myapp4308 #若用户已经存在则不增加grep $myappuser: /etc/group & /dev/null | groupadd $myappuser grep $myappuser: /etc/passwd & /dev/null | useradd $myappuser -d $installdir -g $myappuser #用户密码echo myapp4308 | passwd -stdin $myappuser #修改目录属主chown $myappuser $installdirchgrp $myappuser $installdir#支撑软件列表softlist=gccopensslunixODBCunixODBC-develncurses-develgtk2xmltodialog#应用端口列表#mysqlport=3306#wwwport=8080#mqport=5673#mqweb=5567myappport=8080556756733306checknetworkcheckenv $softlistecho -Config_Firewall $myappportiptables-save /etc/sysconfig/iptablesecho -if ! -d $installdir ; thenecho creating folder $installdirmkdir $installdir elseecho Warning: cannot create directory $installdir exists. echo -exitfiadduserecho -echo Extract the installation package.echo -#将二进制文件从.bin文件里分离出来sed -n -e 1,/exit 0$/!p $0 $installdir/$env_name.tar.gz 2/dev/nullif $? -eq 0 ;thenecho Install .cd $installdir# su $myappuser -c gunzip $env_name.tar.gz | tar xvvf -#for x in tar -tvvzf $env_name.tar.gz; do#one=echo $x | awk print $3;#done#for x in $one; do#sum=expr $sum + $x;#done# s=$sums=650028382#以myappuser用户执行解压并显示进度su $myappuser -c gunzip $env_name.tar.gz | tar xvvf - | awk -v s=$s a=a+$3; b=(a/s)*100;printf %dn,b | dialog -gauge Install . 10 70 0#rm $env_name.tar.gzcp $installdir/env/scripts/bash_profile $installdir/.bash_profile echo -echo Setup has finished installing myapp-env-1.0 for linux-x64 Stack on your computer. echo echo usage: $installdir/env/ctlscript.sh help echo $installdir/env/ctlscript.sh (start|stop|restart|status) echo $installdir/env/ctlscript.sh (start|stop|restart|status) mysql echo $installdir/env/ctlscript.sh (start|stop|restart|status) apache echo $installdir/env/ctlscript.sh (start|stop|restart|status) tomcat echo $installdir/env/ctlscript.sh (start|stop|restart|status) rabbitmqecho help - this screenecho start - start the service(s)echo stop - stop the service(s)echo restart - restart or start the service(s)echo status - show the status of the service(s)elseecho $env_name.tar.gz not found exitfiecho -echo Are you want to auto start the service on rebooting the unix machine. Y/N or y/n ? read ans#增加服务和自启动if $ans = Y -o $ans = y ; thencp $installdir/env/scripts/myapp-env /etc/init.d/.chmod 755 /etc/init.d/myapp-envrm /etc/rc3.d/S96myapp-envln -s /etc/init.d/myapp-env /etc/rc3.d/S96myapp-env#Register Sonar at boot time :sudo chkconfig -add myapp-envfiecho -echo echo Do you want to start Y/N or y/n ? read ansif $ans = Y -o $ans = y ; thensu $myappuser -c $installdir/env/ctlscript.sh startsu $myappuser -c $installdir/env/ctlscript.sh statusecho echo -echo Once started, you can open your browser and access the following URL:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论