webmin 之 setup.sh 脚本分析

#find install directory 
webmin 之 setup.sh 脚本分析
cd 'dirname $0' 
webmin 之 setup.sh 脚本分析
if [ -x /bin/pwd ]; then 
webmin 之 setup.sh 脚本分析wadir
='/bin/pwd' 
webmin 之 setup.sh 脚本分析
else 
webmin 之 setup.sh 脚本分析wadir
='pwd'
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
#查找并获得安装目录 -> wadir 
webmin 之 setup.sh 脚本分析
ver='cat $wadir/version' 
webmin 之 setup.sh 脚本分析
#获得安装版本 
webmin 之 setup.sh 脚本分析
echo "*****************" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析. 
webmin 之 setup.sh 脚本分析
#显示用户提示信息 
webmin 之 setup.sh 脚本分析
id | grep "uid=1<" >/dev/null 
webmin 之 setup.sh 脚本分析
if [ $? !="0" ]; then 
webmin 之 setup.sh 脚本分析echo 
"ERROR:webmin 之 setup.sh 脚本分析"
webmin 之 setup.sh 脚本分析echo 
""
webmin 之 setup.sh 脚本分析
exit 1
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
#检查是否为root 安装否则提示出错,程序推出 
webmin 之 setup.sh 脚本分析#才知道还有id 这么个命令,,见笑了 

webmin 之 setup.sh 脚本分析
echo "Installing webmin in $ wadir webmin 之 setup.sh 脚本分析" 
webmin 之 setup.sh 脚本分析allmods
='cd $wadir; ls */module.info | sed -e 's/\/module.info//g' | xargs e 
webmin 之 setup.sh 脚本分析cho
' 
webmin 之 setup.sh 脚本分析echo 
"" 
webmin 之 setup.sh 脚本分析
#获取所有的可安装模块信息 
webmin 之 setup.sh 脚本分析

webmin 之 setup.sh 脚本分析
printf "Config file directory [/etc/webmin]:" 
webmin 之 setup.sh 脚本分析
. 
webmin 之 setup.sh 脚本分析
. 
webmin 之 setup.sh 脚本分析
. 
webmin 之 setup.sh 脚本分析
if [ "$config_dir" = ""]; then 
webmin 之 setup.sh 脚本分析config_dir 
= /etc/webmin 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
# 询问配置文件目录 
webmin 之 setup.sh 脚本分析
abspath='echo $config_dir | grep "^/"' 
webmin 之 setup.sh 脚本分析
if [ "$abspath" = "" ]; then 
webmin 之 setup.sh 脚本分析echo 
"Config directory must be an absolute path" 
webmin 之 setup.sh 脚本分析echo 
"" 
webmin 之 setup.sh 脚本分析
exit 2 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
#检查配置文件目录是否合法 
webmin 之 setup.sh 脚本分析
if [ ! -$config_dir ]; then 
webmin 之 setup.sh 脚本分析
mkdir $config_dir 
webmin 之 setup.sh 脚本分析
if [ $? !=0 ]; then 
webmin 之 setup.sh 脚本分析echo 
"ERROR: failed to create directory $config_dir" 
webmin 之 setup.sh 脚本分析echo 
"" 
webmin 之 setup.sh 脚本分析
exit 2 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
#创建配置目录,并检查是否成功 
webmin 之 setup.sh 脚本分析
if [ -"$config_dir/config" ]; then 
webmin 之 setup.sh 脚本分析echo 
"Found existing Webmin configuration in $config_dir" 
webmin 之 setup.sh 脚本分析echo 
"" 
webmin 之 setup.sh 脚本分析upgrading
=1 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
#检查配置文件是否存在,并置标志upgrading 
webmin 之 setup.sh 脚本分析## 注,版本更新部分暂略 

webmin 之 setup.sh 脚本分析

webmin 之 setup.sh 脚本分析ls 
$config_dir | grep -v rpmsave >/dev/null 2>&1 
webmin 之 setup.sh 脚本分析
if [ "$?" = "0" -"$config_dir" != "/etc/webmin" ]; then 
webmin 之 setup.sh 脚本分析echo 
"webmin 之 setup.sh 脚本分析 
webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析exit 2 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#配置目录非空,退出配置 
webmin 之 setup.sh 脚本分析#否则继续安装 
webmin 之 setup.sh 脚本分析pirntf 
"Log file directory [/var/webmin]:" 
webmin 之 setup.sh 脚本分析if [ 
"$var_dir" = "" ]; then 
webmin 之 setup.sh 脚本分析read var_dir 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析if [ 
"$var_dir" = "" ]; then 
webmin 之 setup.sh 脚本分析var_dir=/var/webmin 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#创建系统运行时目录 log directory 
webmin 之 setup.sh 脚本分析#缺省使用/var/webmin 
webmin 之 setup.sh 脚本分析abspath='echo $var_dir | grep 
"^/"
webmin 之 setup.sh 脚本分析if [ 
" &abspath " = "" ]; then 
webmin 之 setup.sh 脚本分析echo 
"log file dwebmin 之 setup.sh 脚本分析.." 
webmin 之 setup.sh 脚本分析echo 
"" 
webmin 之 setup.sh 脚本分析echo 3 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#检查该运行时文件目录是否合法,否则退出 
webmin 之 setup.sh 脚本分析#grep 
"^/" 行首 以"/"开始 
webmin 之 setup.sh 脚本分析if [ ! -d $var_dir ]; then 
webmin 之 setup.sh 脚本分析mkdir $var_dir 
webmin 之 setup.sh 脚本分析if [ $? !=0 ]; then 
webmin 之 setup.sh 脚本分析ehco 
"error:webmin 之 setup.sh 脚本分析" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#运行时文件目录不存在,则创建之,若创建失败,退出 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析依靠perl 运行的webmin当然要确定一下系统中是否有perl 的解释器, 
webmin 之 setup.sh 脚本分析以下: 
webmin 之 setup.sh 脚本分析if [ -x /usr/bin/perl ]; then 
webmin 之 setup.sh 脚本分析perldef=/usr/bin/perl 
webmin 之 setup.sh 脚本分析elif [ -x /usr/local/bin/perl ]; then 
webmin 之 setup.sh 脚本分析perldef=/usr/local/bin/perl 
webmin 之 setup.sh 脚本分析else 
webmin 之 setup.sh 脚本分析perldef =
"" 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#检查几个常用perl安装路径是否有perl 存在,否则定义perldef变量为
"" 
webmin 之 setup.sh 脚本分析if [ 
"$perl" = "" ]; then 
webmin 之 setup.sh 脚本分析if [ 
"$perldef" = "" ]; then 
webmin 之 setup.sh 脚本分析read perl 
webmin 之 setup.sh 脚本分析if [ 
"$perl" = "" ];then 
webmin 之 setup.sh 脚本分析echo 
"error:webmin 之 setup.sh 脚本分析" 
webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析exit 4 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析else 
webmin 之 setup.sh 脚本分析printf 
"Full path to perl webmin 之 setup.sh 脚本分析" 
webmin 之 setup.sh 脚本分析#提示输入 
webmin 之 setup.sh 脚本分析read perl 
webmin 之 setup.sh 脚本分析if [ 
"$perl" = ""];then 
webmin 之 setup.sh 脚本分析perl=$perldef 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#上一步如果没有找到perl 的安装路径,则要求用户输入perl 的路径 
webmin 之 setup.sh 脚本分析#有问题这里! perl & perldef ?! 真麻烦! 有一个不久行了吗?! 
webmin 之 setup.sh 脚本分析if [ ! -x $perl ]; then 
webmin 之 setup.sh 脚本分析echo 
"error: messagewebmin 之 setup.sh 脚本分析" 
webmin 之 setup.sh 脚本分析exit 5 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析# 没有perl环境, 退出 
webmin 之 setup.sh 脚本分析$perl -e 'print 
"foobar\n"' 2>/dev/null | grep foobar >/dev/null 
webmin 之 setup.sh 脚本分析if [ $? != 
"0" ];then 
webmin 之 setup.sh 脚本分析echo
"errorwebmin 之 setup.sh 脚本分析" 
webmin 之 setup.sh 脚本分析exit 6 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#否则测试perl 是否可以运行webmin 之 setup.sh 脚本分析(打印一行试试,并进行检测) 
webmin 之 setup.sh 脚本分析$perl -e 'exit ($] < 5.002 ? 1:0)' 
webmin 之 setup.sh 脚本分析if [ $? = 
"1" ]; then 
webmin 之 setup.sh 脚本分析echo 
"error : messagewebmin 之 setup.sh 脚本分析" 
webmin 之 setup.sh 脚本分析exit 7 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#检测版本信息,要求5.002 以上版本( 本setup.sh出自 ver0.88) 
webmin 之 setup.sh 脚本分析$perl -e 'use Socket; print 
"foobar\n"' 2>/dev/null | grep foobar >/dev/null 
webmin 之 setup.sh 脚本分析if [ $? != 
"0" ];then 
webmin 之 setup.sh 脚本分析echo 
"error mesagewebmin 之 setup.sh 脚本分析." 
webmin 之 setup.sh 脚本分析exit 8 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#检测socket 模块是否正确安装..否则退出 
webmin 之 setup.sh 脚本分析$perl -e '$c = crypt(
"xx","yy"); exit($c ? 0:1)' 
webmin 之 setup.sh 脚本分析if [ $? != 
"0" ]; then 
webmin 之 setup.sh 脚本分析echo 
"erro mesage.." 
webmin 之 setup.sh 脚本分析eixt 9 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#检测加密模块是否正确安装,否则退出 
webmin 之 setup.sh 脚本分析echo 
" Pelr seems to be installed ok" 
webmin 之 setup.sh 脚本分析echo 
"" 
webmin 之 setup.sh 脚本分析#通知用户perl检测正常 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析操作系统选择,见 oschooser.pl 和 os_list.txt 理的内容 
webmin 之 setup.sh 脚本分析oschooser.pl 实现系统选择, 还没细看,大概就是根据不同的linux发 
webmin 之 setup.sh 脚本分析布(因为它们的配置文件名会有所不同,怎么说,叫个案追究吧 呵呵) 
webmin 之 setup.sh 脚本分析给webmin使用不同配置文件(参数变化) 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析printf 
"Web server port (default 10000): " 
webmin 之 setup.sh 脚本分析if [ 
"$port" = "" ]; then 
webmin 之 setup.sh 脚本分析read port 
webmin 之 setup.sh 脚本分析if [ 
"$port" = "" ]; then 
webmin 之 setup.sh 脚本分析port=10000 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析if [ $port -lt 1 ]; then 
webmin 之 setup.sh 脚本分析echo 
"ERROR: $port is not a valid port number" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo 
"" 
webmin 之 setup.sh 脚本分析exit 11 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析if [ $port -gt 65535 ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo 
"ERROR: $port is not a valid port number. Port numbers cannot be" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo 
" greater than 65535" 
webmin 之 setup.sh 脚本分析echo 
"" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析exit 12 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析$perl -e 'use Socket; socket(FOO, PF_INET, SOCK_STREAM, getprotobyname(
"tcp" 
webmin 之 setup.sh 脚本分析)); 
webmin 之 setup.sh 脚本分析setsockopt(FOO, SOL_SOCKET, SO_REUSEADDR, pack(
"l", 1)); 
webmin 之 setup.sh 脚本分析bind(FOO, sockaddr_in($ARGV[0], INADDR_ANY)) || exit(1); 
webmin 之 setup.sh 脚本分析exit(0);' 
webmin 之 setup.sh 脚本分析$port 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析if [ $? != 
"0" ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo 
"ERROR: TCP port $port is already in use by another program" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo 
"" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析exit 13 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析printf 
"Login name (default admin): " 
webmin 之 setup.sh 脚本分析if [ 
"$login" = "" ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析read login 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析if [ 
"$login" = "" ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析login=
"admin" 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析echo $login | grep : >/dev/null 
webmin 之 setup.sh 脚本分析if [ 
"$?" = "0" ]; then 
webmin 之 setup.sh 脚本分析echo 
"ERROR: Username contains a : character" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo 
"" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析exit 14 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析printf 
"Login password: " 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析if [ 
"$password" = "" -a "$crypt" = "" ]; then 
webmin 之 setup.sh 脚本分析stty -echo 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析read password 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析stty echo 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析printf 
"\n" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析printf 
"Password again: " 
webmin 之 setup.sh 脚本分析stty -echo 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析read password2 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析stty echo 
webmin 之 setup.sh 脚本分析printf 
"\n" 
webmin 之 setup.sh 脚本分析if [ 
"$password" != "$password2" ]; then 
webmin 之 setup.sh 脚本分析echo 
"ERROR: Passwords don't match" 
webmin 之 setup.sh 脚本分析echo "" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析exit 14 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析echo $password | grep : >/dev/null 
webmin 之 setup.sh 脚本分析if [ "$?" = "0" ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "ERROR: Password contains a : character" 
webmin 之 setup.sh 脚本分析echo "" 
webmin 之 setup.sh 脚本分析exit 14 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析defhost=`hostname` 
webmin 之 setup.sh 脚本分析printf "Web server hostname (default $defhost): " 
webmin 之 setup.sh 脚本分析if [ "$host" = "" ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析read host 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析if [ "$host" = "" ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析host=$defhost 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析if [ "$ssl" = "" ]; then 
webmin 之 setup.sh 脚本分析ssl=0 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析$perl -e 
'use Net::SSLeay' >/dev/null 2>/dev/null 
webmin 之 setup.sh 脚本分析if [ $? = "0" ]; then 
webmin 之 setup.sh 脚本分析printf "Use SSL (y/n): " 
webmin 之 setup.sh 脚本分析read sslyn 
webmin 之 setup.sh 脚本分析if [ "$sslyn" = "y" -o "$sslyn" = "Y" ]; then 
webmin 之 setup.sh 脚本分析ssl=1 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析else 
webmin 之 setup.sh 脚本分析echo "The Perl SSLeay library is not installed. SSL not available." 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析rm -f core 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析# Ask whether to run at boot time 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析if [ "$atboot" = "" ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析initsupp=`grep "^os_support=" $wadir/init/module.info | sed -e 
's/os_suppor 
webmin 之 setup.sh 脚本分析t
=//g' | grep $os_type` 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析atboot=0 
webmin 之 setup.sh 脚本分析if [ "$initsupp" != "" ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析printf "Start webmin at boot time (y/n): " 
webmin 之 setup.sh 脚本分析read atbootyn 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析if [ "$atbootyn" = "y" -o "$atbootyn" = "Y" ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析atboot=1 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析else 
webmin 之 setup.sh 脚本分析echo "webmin does not support being started at boot time on your system." 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析makeboot=$atboot 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析#很无聊啊, 在分析下去webmin 之 setup.sh 脚本分析.. 失败! 选择错误! 
webmin 之 setup.sh 脚本分析#太失败拉webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析.不好玩 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析if [ "$port" = "" ];then 
webmin 之 setup.sh 脚本分析read port 
webmin 之 setup.sh 脚本分析if [ "$port" = "" ];then 
webmin 之 setup.sh 脚本分析port=8081 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析if [ $port -lt 1]; then 
webmin 之 setup.sh 脚本分析echo "error message" 
webmin 之 setup.sh 脚本分析eixt 11 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#接受拥护定义服务端口号, 缺省使用8081 
webmin 之 setup.sh 脚本分析if [ $port -gt 65535 ] ;then 
webmin 之 setup.sh 脚本分析#error message 
webmin 之 setup.sh 脚本分析exit 12 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#若用户定义的端口号大于65535 , 则报错退出 
webmin 之 setup.sh 脚本分析#用户可使用的端口是从1000 以后还是从1024 以后? 谁告诉我? 
webmin 之 setup.sh 脚本分析$perl -e 
'use Socketsocket(FOO, PF_INET, SOCK_STREAM, getprotobyname("tcp" 
webmin 之 setup.sh 脚本分析)); 
webmin 之 setup.sh 脚本分析set 
socket(FOO,SOL_SOCKET,SO_REUSEADDR, pack("l",1)); 
webmin 之 setup.sh 脚本分析
bind(FOO,sockaddr_in($ARGV[0],INADDR_ANY)) || exit(1);exit(0);' $p 
webmin 之 setup.sh 脚本分析ort 
webmin 之 setup.sh 脚本分析if [ $? !="0" ]; then 
webmin 之 setup.sh 脚本分析echo "error messagewebmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析exit 13 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#测试端口是否被占用, 方法见perl -e 那行的代码 
webmin 之 setup.sh 脚本分析printf "login name (default admin):" 
webmin 之 setup.sh 脚本分析if [ "$loging" = ""] ; then 
webmin 之 setup.sh 脚本分析read login 
webmin 之 setup.sh 脚本分析if [ "$login" = ""]; then 
webmin 之 setup.sh 脚本分析loging="admin" 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#接受用户输入的管理员名称,缺省使用admin 
webmin 之 setup.sh 脚本分析echo $login | grep : >/dev/null 
webmin 之 setup.sh 脚本分析if [ "$?" = "0" ] ; then 
webmin 之 setup.sh 脚本分析echo error mesage.. 
webmin 之 setup.sh 脚本分析exit 14 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析# 检测用户名称是否合法, 这里可以稍加改进,不用动不动就退出安装. 
webmin 之 setup.sh 脚本分析pirntf " loging passwd" 
webmin 之 setup.sh 脚本分析if [ "$password" = "" -a "$crypt" = "" ]; then 
webmin 之 setup.sh 脚本分析stty -echo 
webmin 之 setup.sh 脚本分析read password 
webmin 之 setup.sh 脚本分析stty echo 
webmin 之 setup.sh 脚本分析printf "\n" 
webmin 之 setup.sh 脚本分析printf "password agani:" 
webmin 之 setup.sh 脚本分析stty -echo 
webmin 之 setup.sh 脚本分析read password2 
webmin 之 setup.sh 脚本分析stty echo 
webmin 之 setup.sh 脚本分析printf "\n" 
webmin 之 setup.sh 脚本分析if [ "$password" != "$pasword2" ] ;then 
webmin 之 setup.sh 脚本分析echo "Error message" 
webmin 之 setup.sh 脚本分析exit 14 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#检查密码,并控制屏显 
webmin 之 setup.sh 脚本分析defhost=
'hostname' 
webmin 之 setup.sh 脚本分析printf "web server hostname (default $defhost):" 
webmin 之 setup.sh 脚本分析if [ "$host" = ""]; then 
webmin 之 setup.sh 脚本分析read host 
webmin 之 setup.sh 脚本分析if [ "$host" = "" ]; then 
webmin 之 setup.sh 脚本分析host=$defhost 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析# 设置主机名称,没有则接受用户输入 
webmin 之 setup.sh 脚本分析if [ "$ssl" = ""]; then 
webmin 之 setup.sh 脚本分析ssl = 0 
webmin 之 setup.sh 脚本分析$perl -e 
'use Net::SSLeay'>/dev/null 2>/dev/null 
webmin 之 setup.sh 脚本分析if [ $? = "0" ] ; then 
webmin 之 setup.sh 脚本分析printf "Use SSL (y/n):" 
webmin 之 setup.sh 脚本分析read sslyn 
webmin 之 setup.sh 脚本分析if [ "$sslyn" = "y" -o "$sslyn" = "Y" ] ; then 
webmin 之 setup.sh 脚本分析ssl=1 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析else 
webmin 之 setup.sh 脚本分析echo "asdfjalksdjfjcjvknxwebmin 之 setup.sh 脚本分析." 
webmin 之 setup.sh 脚本分析rm -f core 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#检查是否正确安装支持 ssl 模块, 否则给出提示信息 
webmin 之 setup.sh 脚本分析if [ "$atboot" = "" ];then 
webmin 之 setup.sh 脚本分析initsupp=
'grep "^os_support=" $wadir/init/module.info | sed -'s/os_suppo 
webmin 之 setup.sh 脚本分析rt=//g
' |grep $os_type' 
webmin 之 setup.sh 脚本分析atboot=0 
webmin 之 setup.sh 脚本分析if [ "$initsupp" != ""];then 
webmin 之 setup.sh 脚本分析printf "Start webmin at boot time (y/n):" 
webmin 之 setup.sh 脚本分析read atbootyn 
webmin 之 setup.sh 脚本分析if [ "$atbootyn" = "y" -o "$atbootyn" = "Y"]; then 
webmin 之 setup.sh 脚本分析atboot=1 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析else 
webmin 之 setup.sh 脚本分析echo webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#检测模块安装文件/init/module.info中查找os_support 项所支持的 
webmin 之 setup.sh 脚本分析#os_type中是否有当前的os_type,有则提示用户选择是否在系统启动时 
webmin 之 setup.sh 脚本分析#启动webmin 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo $perl > $config_dir/perl-path 
webmin 之 setup.sh 脚本分析echo $var_dir > $config_dir/var-path 
webmin 之 setup.sh 脚本分析echo "******************************************" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "Creating web server config files.." 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析cfile=$config_dir/miniserv.conf 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "port=$port" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "root=$wadir" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "host=$host" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "mimetypes=$wadir/mime.types" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "addtype_cgi=internal/cgi" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "realm=LNMS Server" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "logfile=$var_dir/miniserv.log" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "pidfile=$var_dir/miniserv.pid" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "logtime=168" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "ppath=$ppath" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "ssl=$ssl" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "env_LNMS_CONFIG=$config_dir" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "env_LNMS_VAR=$var_dir" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "atboot=$atboot" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "logout=$config_dir/logout-flag" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "listen=10000" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "denyfile=\\.pl\$" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析if [ "$allow" != "" ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "allow=$allow" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析if [ "$session" != "" ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "session=$session" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析else 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "session=1" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#创建/etc/webmin(配置文件目录)下的miniserv.conf 
webmin 之 setup.sh 脚本分析#前面搜集的一些变量在此被写入文件 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析ufile=$config_dir/miniserv.users 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析if [ "$crypt" != "" ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "$login:$crypt:0" > $ufile 
webmin 之 setup.sh 脚本分析else 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析$perl -e 
'print "$ARGV[0]:",crypt($ARGV[1], "XX"),":0\n"' "$login" "$passwo 
webmin 之 setup.sh 脚本分析rd" > $ufile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析chmod 600 $ufile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "userfile=$ufile" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析#创建用户加密文件,并更改其权限 
webmin 之 setup.sh 脚本分析kfile=$config_dir/miniserv.pem 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析cp $wadir/miniserv.pem $kfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析chmod 600 $kfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析#拷贝安装目录下的miniserv必须的模块文件到/etc/webmin 目录 
webmin 之 setup.sh 脚本分析#并设置权限 
webmin 之 setup.sh 脚本分析echo "keyfile=$config_dir/miniserv.pem" >> $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析#追加miniserv 模块文件信息至 miniserv.conf 文件 
webmin 之 setup.sh 脚本分析chmod 600 $cfile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "..done" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "Creating access control file.." 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析afile=$config_dir/webmin.acl 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析rm -f $afile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析#清空已存在的webmin acl 文件,不管有没有,删下看! 
webmin 之 setup.sh 脚本分析echo "$login: $allmods" >> $afile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析chmod 600 $afile 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "..done" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "" 
webmin 之 setup.sh 脚本分析#将现有的模块注册,并重新创建webmin.acl 文件 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析还有一点webmin 之 setup.sh 脚本分析.. 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析#有问题啊这里,谁给我讲讲 
webmin 之 setup.sh 脚本分析if [ "$noperlpath" = "" ]; then 
webmin 之 setup.sh 脚本分析echo "Inserting path to perl into scripts.." 
webmin 之 setup.sh 脚本分析(find $wadir -name 
'*.cgi' -print;find $wadir -name '*.pl' -print) 
webmin 之 setup.sh 脚本分析| $perl $wadir/perlpath.pl $perl - 
webmin 之 setup.sh 脚本分析echo "..done" 
webmin 之 setup.sh 脚本分析echo "" 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析# 有问题 :perl perlpath.pl perl - webmin 之 setup.sh 脚本分析 这里在做什么?! 
webmin 之 setup.sh 脚本分析#创建/etc/webmin/start & stop 脚本。。。略 
webmin 之 setup.sh 脚本分析if [ -r /etc/system.cnf ] ; then 
webmin 之 setup.sh 脚本分析source /etc/system.cnf 
webmin 之 setup.sh 脚本分析if [ "$CONF_LST_LANG" = "us" ];then 
webmin 之 setup.sh 脚本分析CONF_LST_LANG=en 
webmin 之 setup.sh 脚本分析elif [ "$CONF_LST_LANG" = "uk" ]; then 
webmin 之 setup.sh 脚本分析CONF_LST_LANG=en 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析grep "lang=$CONF_LST_LANG," $wadir/lang_list.txt >/dev/null 2>&1 
webmin 之 setup.sh 脚本分析if [ "$?" = 0 ]; then 
webmin 之 setup.sh 脚本分析echo "lang=$CONF_LST_LANG" >> $config_dir/config 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#检查系统培植文件/etc/system.cnf中的CONF_LST_LANG 
webmin 之 setup.sh 脚本分析#设置语言相关得选项 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo $ver > $config_dir/version 
webmin 之 setup.sh 脚本分析echo "..done" 
webmin 之 setup.sh 脚本分析if [ "$makeboot" = "1" ] ;then 
webmin 之 setup.sh 脚本分析.. 
webmin 之 setup.sh 脚本分析(cd $wadir/init; WEBMIN_CONFIG=$config_dir WEBMIN_VAR=$var_dir 
webmin 之 setup.sh 脚本分析$wadir/init/atboot.pl) 
webmin 之 setup.sh 脚本分析.. 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析# 根据安装时的启动选项设置相关文件,参数 
webmin 之 setup.sh 脚本分析# 注意最后运行的 atboot.pl 再作分析 
webmin 之 setup.sh 脚本分析if [ "$nouninstall" = "" ]; then 
webmin 之 setup.sh 脚本分析.. 
webmin 之 setup.sh 脚本分析cat >$config_dir/uninstall.sh <<EOF 
webmin 之 setup.sh 脚本分析#!/bin/sh 
webmin 之 setup.sh 脚本分析printf " Are you sure you want to unistall Webmin? (Y/N):" 
webmin 之 setup.sh 脚本分析read answer 
webmin 之 setup.sh 脚本分析printf "\n" 
webmin 之 setup.sh 脚本分析if [ "\$answer" = "y" ]; then 
webmin 之 setup.sh 脚本分析$config_dir/stop 
webmin 之 setup.sh 脚本分析if [ "$atboot" = "1" ]; then 
webmin 之 setup.sh 脚本分析(cd $wadir/init ; WEBIN_CONFIG=$config_dir WEBMIN_VAR=$var_dir $wadir/init/ 
webmin 之 setup.sh 脚本分析delboot.pl) 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析echo "Deleting $wadir.." 
webmin 之 setup.sh 脚本分析rm -rf $wadir 
webmin 之 setup.sh 脚本分析echo "Deleting $config_dir ." 
webmin 之 setup.sh 脚本分析rm -rf $config_dir 
webmin 之 setup.sh 脚本分析echo "..Done" 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析EOF 
webmin 之 setup.sh 脚本分析chmod +x $config_dir/uninstall.sh 
webmin 之 setup.sh 脚本分析echo "..done" 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析# 创建卸载脚本, 很easy 给点提示,让后把相关得目录删掉即可 
webmin 之 setup.sh 脚本分析# 注意$wadir/init/delboot.pl 并注意与adboot.pl 对照 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "Changing ownership and permissions .." 
webmin 之 setup.sh 脚本分析chown -R root:bin $config_dir 
webmin 之 setup.sh 脚本分析chmod -R og-rw $config_dir 
webmin 之 setup.sh 脚本分析chmod 755 $config_dir/sendmail/config >/dev/null 2>&1 
webmin 之 setup.sh 脚本分析chmod 755 $config_dir/sendmail/autoreply.pl >/dev/null 2>&1 
webmin 之 setup.sh 脚本分析#改变配置模块文件属主及访问权限 
webmin 之 setup.sh 脚本分析#为什么对sendmail单独处理? 我还不太清楚 
webmin 之 setup.sh 脚本分析if [ "$nochown" = "" ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析chown -R root:bin $wadir 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析#chmod -R og-rwx $wadir 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析if [ $var_dir != "/var" ]; then 
webmin 之 setup.sh 脚本分析chown -R root:bin $var_dir 
webmin 之 setup.sh 脚本分析chmod -R og-rwx $var_dir 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析echo "..done" 
webmin 之 setup.sh 脚本分析echo "" 
webmin 之 setup.sh 脚本分析#改变安装目录(安装完后即执行目录)的属主 
webmin 之 setup.sh 脚本分析#处理$var_dir 的属主及执行权限 比较周到 
webmin 之 setup.sh 脚本分析if [ "$nostart" = "" ]; then 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "Attempting to start Webmin mini web server.." 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析$config_dir/start 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析if [ $? != "0" ]; then 
webmin 之 setup.sh 脚本分析echo "ERROR: Failed to start web server!" 
webmin 之 setup.sh 脚本分析echo "" 
webmin 之 setup.sh 脚本分析exit 14 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析# 试图启动webmin 的 mini server 
webmin 之 setup.sh 脚本分析# 若失败则退出 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "..done" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "***********************************" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "Webmin has been installed and started successfully. Use your web" 
webmin 之 setup.sh 脚本分析echo "browser to go to" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析#启动成功给出响应的提示信息 
webmin 之 setup.sh 脚本分析if [ "$ssl" = "1" ]; then 
webmin 之 setup.sh 脚本分析echo " https://$host:$port/" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析else 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo " http://$host:$port/" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "and login with the name and password you entered previously." 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析if [ "$ssl" = "1" ]; then 
webmin 之 setup.sh 脚本分析echo "Because Webmin uses SSL for encryption only, the certificate" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "it uses is not signed by one of the recognized CAs such as" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "Verisign. When you first connect to the Webmin server, your" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "browser will ask you if you want to accept the certificate" 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "presented, as it does not recognize the CA. Say yes." 
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析echo "" 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析#若ssl 有效,则给出启动客户端的方式:https://webmin 之 setup.sh 脚本分析:prot 
webmin 之 setup.sh 脚本分析fi 
webmin 之 setup.sh 脚本分析# over 本次分析排除了,upgrade 操作的代码分析webmin 之 setup.sh 脚本分析 不过我认为 
webmin 之 setup.sh 脚本分析# 主要部分搞定的话,足以,省得看着那么多,不爽! :) 
上一篇:Docker 1.11 增强功能:直接在runC和containerd构建引擎


下一篇:浅谈 Promise 的用法