天天看点

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 脚本分析
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 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析

exit 2 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

#检查配置文件目录是否合法 

webmin 之 setup.sh 脚本分析

if [ ! -d $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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

#创建配置目录,并检查是否成功 

webmin 之 setup.sh 脚本分析

if [ -r "$config_dir/config" ]; then 

webmin 之 setup.sh 脚本分析

echo "Found existing Webmin configuration in $config_dir" 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

upgrading=1 

webmin 之 setup.sh 脚本分析
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" -a "$config_dir" != "/etc/webmin" ]; then 

webmin 之 setup.sh 脚本分析

echo "

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

var_dir=/var/webmin 

webmin 之 setup.sh 脚本分析
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 d

webmin 之 setup.sh 脚本分析

.." 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

echo 3 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

#检查该运行时文件目录是否合法,否则退出 

webmin 之 setup.sh 脚本分析

#grep "^/" 行首 以"/"开始 

webmin 之 setup.sh 脚本分析

if [ ! -d $var_dir ]; then 

webmin 之 setup.sh 脚本分析

mkdir $var_dir 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

ehco "error:

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析

perldef ="" 

webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

printf "Full path to perl 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

#提示输入 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

if [ "$perl" = ""];then 

webmin 之 setup.sh 脚本分析

perl=$perldef 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

#上一步如果没有找到perl 的安装路径,则要求用户输入perl 的路径 

webmin 之 setup.sh 脚本分析

#有问题这里! perl & perldef ?! 真麻烦! 有一个不久行了吗?! 

webmin 之 setup.sh 脚本分析

if [ ! -x $perl ]; then 

webmin 之 setup.sh 脚本分析

echo "error: message

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

exit 5 

webmin 之 setup.sh 脚本分析
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"error

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

exit 6 

webmin 之 setup.sh 脚本分析
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 : message

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

exit 7 

webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析

echo "error mesage

webmin 之 setup.sh 脚本分析

." 

webmin 之 setup.sh 脚本分析

exit 8 

webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析

#检测加密模块是否正确安装,否则退出 

webmin 之 setup.sh 脚本分析

echo " Pelr seems to be installed ok" 

webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析

port=10000 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析

exit 11 

webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

exit 12 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

echo "ERROR: TCP port $port is already in use by another program" 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

exit 13 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

login="admin" 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

exit 14 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

read password2 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

if [ "$password" != "$password2" ]; then 

webmin 之 setup.sh 脚本分析

echo "ERROR: Passwords don't match" 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

echo $password | grep : >/dev/null 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

echo "ERROR: Password contains a : character" 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

host=$defhost 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

echo "webmin does not support being started at boot time on your system." 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

port=8081 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

if [ $port -lt 1]; then 

webmin 之 setup.sh 脚本分析

echo "error message" 

webmin 之 setup.sh 脚本分析

eixt 11 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

#接受拥护定义服务端口号, 缺省使用8081 

webmin 之 setup.sh 脚本分析

if [ $port -gt 65535 ] ;then 

webmin 之 setup.sh 脚本分析

#error message 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

#若用户定义的端口号大于65535 , 则报错退出 

webmin 之 setup.sh 脚本分析

#用户可使用的端口是从1000 以后还是从1024 以后? 谁告诉我? 

webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析

echo "error message

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

#测试端口是否被占用, 方法见perl -e 那行的代码 

webmin 之 setup.sh 脚本分析

printf "login name (default admin):" 

webmin 之 setup.sh 脚本分析

if [ "$loging" = ""] ; then 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

if [ "$login" = ""]; then 

webmin 之 setup.sh 脚本分析

loging="admin" 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

#接受用户输入的管理员名称,缺省使用admin 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

if [ "$?" = "0" ] ; then 

webmin 之 setup.sh 脚本分析

echo error mesage.. 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

# 检测用户名称是否合法, 这里可以稍加改进,不用动不动就退出安装. 

webmin 之 setup.sh 脚本分析

pirntf " loging passwd" 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

printf "password agani:" 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

if [ "$password" != "$pasword2" ] ;then 

webmin 之 setup.sh 脚本分析

echo "Error message" 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析

if [ "$sslyn" = "y" -o "$sslyn" = "Y" ] ; then 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

echo "asdfjalksdjfjcjvknx

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

#检查是否正确安装支持 ssl 模块, 否则给出提示信息 

webmin 之 setup.sh 脚本分析

if [ "$atboot" = "" ];then 

webmin 之 setup.sh 脚本分析

initsupp='grep "^os_support=" $wadir/init/module.info | sed -e 's/os_suppo 

webmin 之 setup.sh 脚本分析

rt=//g' |grep $os_type' 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

if [ "$initsupp" != ""];then 

webmin 之 setup.sh 脚本分析

printf "Start webmin at boot time (y/n):" 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

if [ "$atbootyn" = "y" -o "$atbootyn" = "Y"]; then 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

echo 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

echo "session=1" >> $cfile 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
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 脚本分析
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 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
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 脚本分析
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 脚本分析
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 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析

EOF 

webmin 之 setup.sh 脚本分析

chmod +x $config_dir/uninstall.sh 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析

echo "ERROR: Failed to start web server!" 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

# 试图启动webmin 的 mini server 

webmin 之 setup.sh 脚本分析

# 若失败则退出 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

echo " http://$host:$port/" 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

echo "and login with the name and password you entered previously." 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析
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 脚本分析
webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

#若ssl 有效,则给出启动客户端的方式:https://

webmin 之 setup.sh 脚本分析

:prot 

webmin 之 setup.sh 脚本分析
webmin 之 setup.sh 脚本分析

# over 本次分析排除了,upgrade 操作的代码分析

webmin 之 setup.sh 脚本分析

 不过我认为 

webmin 之 setup.sh 脚本分析

# 主要部分搞定的话,足以,省得看着那么多,不爽! :) 

继续阅读