免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5225 | 回复: 3
打印 上一主题 下一主题

SDR1.0(SHELL+Dialog+RSA)Linux主机集中管理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-11 16:14 |只看该作者 |倒序浏览
SDR1.0(SHELL+Dialog+RSA)Linux主机集中管理



前言
       07年上线的一个Linux集中式管理,基于bash shell+Dialog+mysql+python+mod_perl来实现,现在共享出来,希望平台的思想及实现方法能够给大家一些帮助,以下为系统的说明文档。

一、开发目的
       为了使管理Linux服务器群变得更安全、简单、高效、智能。一定程度上缩小了维护成本,提高工作效率,做好应付将来管理上千台Linux服务器打好基础。

二、背景
       目前管理Linux服务器的方式还是走SSH到终端的管理方式,此方式存在一定的全安隐患。管理这些服务器的passwd就很头疼,稍微不注意,passwd会被黑客获取,造成灾难性的后果。管理应用方面,同样也是通过管理员电脑到每台服务器去操作,同样的一个操作就得到每台服务器上面重复地去做,消耗了很多时间与精力。在服务器性能监控方面,目前在应用Cacti、nagios平台,全此方式让管理员很被动,一般都是等到故障发生了才发现问题,影响了用户体验。主要原因是不能提前了解到服务器的健康状态。没有实时的跟踪、报警、分析机制。以后服务器会翻倍地增加,目前这种管理方式很明显已经不适应发展的需求。

三、系统特点
安全性-管理系统具有很好的安全性,通过2048位RSA密钥进行监控服务器与被监控服务器的认证,可以省去输入繁琐和易泄露的密码。系统管理员只要对主监控服务器做好安全配置并保管好私钥即可,被监控服务器外网远程终端默认将会被关闭,系统会定期扫描被监控服务器内/外网安全情况,生成分析结果给管理员。系统管理员可以定期更换公钥、私钥来提高安全系数。登录监控平台需要密码(perl pack加密)认证,每个操作窗口都加入会话认证,整个系统编译后的文件都是以二进制方式存放。

智能化-监控服务器会根据被监控服务器上的应用部署相应的代理客户端,由代理客户端来检查、监控、分析本服务器的状态,分析结果将通过邮件、WEB、短信通知给系统管理员。让管理员不间隔了解到服务器的状态信息,代理客户端同时也具备管理本服务器应用的权力,当应用发生故障时它会自我修复并通知管理员。

易用性-系统是基于Linux shell模式下的对话框展示,中文环境,同时也支持鼠标操作,功能清晰明了,操作时系统也会提示相应的文字提示,非常简单。

高效率-新上架的服务器只要进行如下三步即可上线提供服务,即添加服务器->初始化->部署应用。如果要在多台服务器上进行一样的操作,只要选择好操作事件跟操作对象就可以了。

灵活性-升级被监控服务器上的对象很方便,只要在监控服务器上更新好相应对象代码,系统会自动到被监控服务器上去更新它们。

可扩展性-系统提供的高级应用功能,其它同事也可以编写自己的模块,根据不同应用可以定制不同的功能模块,系统提供这样的接口。

4、系统网络架构图



5、系统流程图



6、系统主界面


四、系统主要功能
      SDR1.0是基于Linux bash shell+mysql+python+mod_perl工具开发,功能覆盖了Linux常用常用操作,下面详细介绍系统主要功能:
1、系统目录结构
/
│  add_firewall        添加防火墙
│  add_server        添加服务器
│  add_app          部署应用
│  add_agent        部署代理
│  authorized_keys      公钥
│  checkonline        登录验证
│  config          配制文件
│  c_server_class        多选服务器列表
│  go            登录
│  identity          私钥
│  list_server_do        选择服务器
│  list_server_info      服务器信息
│  main          功能选择
│  msgbox          提示信息
│  r_server_class        单选服务器
├─tyapp          应用安装脚本

├─bin
│      nohup.out        tmpfile
│      syslog2mysql.sh      syslogs to mysql shell
│      TyserverScan      服务器端口扫描(外网)

├─cron
│      TyserverwebScan      验证WEB状态主程序

├─document
│      document.txt      开发文档

├─key
│      identitybak        old key

├─logs          系统操作日志目录
├─tyagent          代理程序目录
└─tysysadmin        前端cgi-bin目录
    ├─cgi-bin
    │      config.pl
    │      index.cgi            模块入口程序
    │      sendmail.cgi                  邮件报警接口
    │
    ├─css
    │      style.CSS
    │
    ├─js
    │      copyright.js
    │
    └─modules
        └─Apache
                ServerLoglist.pm  服务器日志列表
                ServerScanport.pm  服务器端口扫描
                ServerScanweb.pm  服务器状态扫描

五、功能介绍
5.1服务器列表
[功能]列表显示已添加至系统的服务器及其状态。
[操作方法]选择添加服务器->选择服务器分类->列表出此类别服务器信息,包括LAN IP、WAN IP、日志客户端、SSH终端、防火墙、部署代理等等信息。

5.2添加服务器
[功能]添加服务器到系统。
[操作方法]选择添加服务器->选择服务器分类->输入服务器名称、内网IP、外网IP,上下方向键切换输入框,这几项都不允许为空,输入完毕后点[Add]。

5.3安全检测
[功能]扫描服务器内网端口开放情况。
[操作方法]选择安全检测->选择服务器分类->选择服务器->显示扫描进度条并将结果写入数据库。
5.4部署代理
[功能]给服务器部署代理。
[操作方法]选择部署代理->选择服务器分类->选择服务器->选择代理类型->[OK]。

5.5连接状态
[功能]查看已添加的被监控服务器与主监控服务器的连接状态,在做其它操作之前查看此项是一个好习惯。
[操作方法]选择连接状态->显示探测进度条->生成结果。

5.6更换证书
[功能]更新主、被监控服务器的私、公钥,为了保障整个安全,定期更换证书是很有必要的。
[操作方法]选择更换证->显示探测进度条。

5.7管理终端
[功能]开/关远程访问被监控服务器SSH终端。
[操作方法] 选择管理终终->选择服务器分类->选择服务器->(开/关)->[OK]。

5.8操作日志
[功能]查看系统操作日志,方便查看历史操作记录。
[操作方法]选择操作日志->选择日期(TAB切换年/月/日,方向键选择日)->显示操作日志记录。

5.9部署日志
[功能]添加被监控服务器系统日志到日志服务器,实时观察其状态。
[操作方法] 选择部署日志->选择服务器分类->选择服务器(显示未添加的服务器列表) ->[OK]。

6.0部署应用
[功能]给服务器部署应用。
[操作方法]选择部署应用->选择服务器分类->选择服务器->选择应用类型->[OK]。

6.1部署防火墙
[功能]给服务器部署防火墙(Firewall)。
[操作方法]选择部署应用->选择服务器分类->选择服务器->选择防火墙类型->[OK]。

6.2初始化
[功能]初始化服务器,优化系统内核、删除无用用户、停止无用服务等等。
[操作方法]选择初始化->选择服务器分类->选择服务器-> [OK]。

6.3高级应用
[功能]本系统扩展的一个接口。
[操作方法]选择高级应用->进入命令行状态->运行相应接口(参数)。

6.4用户管理
[功能]本系统用户帐号管理。
[操作方法]选择用户管理->开发中…。

6.5退出文字
[功能]退出本系统。
[操作方法]选择退出->操作结束。

六、截图说明


[应用分类]



[服务器清单]



[添加服务器]



[安装应用平台]



[操作日志]



[安装功能代理]



[安全扫描]

七、使用指南
1、通过ssh登录监控管理器。
2、[root@sysadmin ~]#go
3、输入管理员密码:
4、验证通过进入管理窗口。

八、前端应用http://blog.liuts.com/attachment.php?fid=148
1、定制作业

* */1 * * * /var/www/tyAdmin/cron/TyserverwebScan
30 0 * * * /var/www/tyAdmin/cron/TyserverScan
2、配置
将ServerLoglist.pm、ServerScanport.pm、ServerScanweb.pm复制到/opt/apache/perl/modules/Apache目录
#vi httpd.conf

<VirtualHost 192.168.100.10:80>
ServerName cgi.sina.com.cn
ServerAdmin liutiansi@gmail.com
ErrorLog /var/log/apache/cgi.sina.com.cn/error.log
CustomLog /var/log/apache/cgi.sina.com.cn/access.log combined
DocumentRoot /var/www/tysysadmin
ScriptAlias /cgi-bin/ "/var/www/tysysadmin/cgi-bin/"

<Directory "/var/www/tysysadmin/cgi-bin">
  SetHandler perl-script
  PerlResponseHandler ModPerl::Registry
  PerlOptions +ParseHeaders
  PerlSendHeader On
  Options +ExecCGI
  Order Deny,Allow
  Deny from all
  Allow from 192.168.100.0/255.255.255.0
</Directory>

<Directory "/opt/apache/perl/modules/Apache">
  Order Deny,Allow
  Deny from all
  Allow from 192.168.100.0/255.255.255.0
</Directory>

PerlRequire /var/www/tysysadmin/cgi-bin/index.cgi
<Location /ServerLoglist>
  SetHandler perl-script
  PerlHandler Apache::ServerLoglist
</Location>

<Location /ServerScanport>
  SetHandler perl-script
  PerlHandler Apache::ServerScanport
</Location>

<Location /ServerScanweb>
  SetHandler perl-script
  PerlHandler Apache::ServerScanweb
</Location>
</VirtualHost>

3、服务器日志时时跟踪
http://192.168.100.10/ServerLoglist

4、服务器端口扫描
http://192.168.100.10/ServerScanport

5、服务器WEB状态监控
http://192.168.100.10/ServerScanweb

九、安装
1、tar -zxvf SDR1.0.tar.gz
2、cd SDR1.0
3、vi config 修改成实际参数

sysadmin_path="/home/SDR1.0"
mysql_bin="/usr/local/mysql/bin/mysql"     #mysql客户端连接器位置
mysql_host="localhost"                          #数据库主机
mysql_user="systemuser"                 #数据库帐号
mysql_passwd="123456"                           #数据库密码
scan_port="U:53,161,T:21-25,80,81,3306,8080"    #安全扫描端口
ConnectTimeout="5"                                              #连接远程服务器
outimesystem_info="天涯Linux服务器管理系统SDR1.0"
copyright_info="\Zb\Z7天涯在线网络有限公司 网络系统部   作者:刘天斯    邮箱:lliutiansi@gmail.com"

4、创建Mysql数据库"sysadmin",并导入SDR1.0/sql/sysadmin.sql
5、修改系统环境
  5.1环境变量:vi /etc/profile

export PATH=$PATH:/usr/local/bin:/home/SDR1.0
  5.2配置ssh链接

ln -s /usr/bin/ssh /usr/bin/sshto
  5.3、修改mysql客户端编码
  vi /etc/my.cnf

[client]
default-character-set=utf8

6、安装nmap
yum -y install nmap

7、生成公私钥

#cd /home/SDR1.0
删除原公私钥
#rm -rf authorized_keys identity
#ssh-keygen -t dsa -b 2048 -f identity
#mv identity.pub authorized_keys
#chmod 600 identity authorized_keys
8、因修改了环境变量,退出终端exit再登录操作系统,进入/home/SDR1.0,运行"go",默认密码为“123456”。OVER:)

十、开发变量说明

1、go[$go_encrypt][服务器加密后的密码][全局]
2、go[$outmessage][密码不正确提示变量][全局(关闭窗口后失效)]
3、checkonline[$outmessage][检查是否登录][全局]
4、当前进程PID:main[$main_pid][登录进程号][全局]
5、选择当前功能值:main[$main_value][功能ID号][全局]
6、选择当前服务器类别值:c_server_class[$server_class_value][服务器列表][全局]
7、选择当前服务器类别值:r_server_class[$server_class_value][服务器列表][全局]
8、选择当前服务器值:$server_value [服务器内网IP][全局]
#------------------------------------------------------------*全局:对下级窗口有效,生命期为主窗口关闭。

论坛徽章:
0
2 [报告]
发表于 2011-05-11 16:15 |只看该作者
十一、处理模块代码
  1. #!/bin/sh
  2. #Function:select checklist server
  3. #Writer:liutiansi
  4. #Mail:lliutiansi@gmail.com
  5. #Date:2007-11-03 23:57
  6. source config
  7. source checkonline

  8. list_server_do_tempfile=`list_server_do_tempfile 2>/dev/null` || list_server_do_tempfile=/tmp/server$main_pid
  9. trap "rm -f $list_server_do_tempfile /tmp/add_firewall$main_pid /tmp/add_agent$main_pid /tmp/add_app$main_pid" 0 1 2 5 15
  10. #过滤服务器列表
  11. case $main_value in
  12.    9)
  13.      sqltj=" and TOLOG='N'"
  14.      ;;
  15.    16)
  16.      sqltj=" and TOFIREWALL='N'"
  17.      ;;      
  18. esac
  19. list_server_do_result=`$mysql_bin -h $mysql_host -u$mysql_user -p$mysql_passwd -e "select SERVER,SERVERIP,SERVERNAME,TOLOG,TOLD,TOFIREWALL from sysadmin.ty_server where SERVERCLASS='$server_class_value'$sqltj order by SERVER;" | awk 'NR>1 {print NR,$0}'|awk '{print $2" "$3" 日志["$5"] 终端["$6"] 防火墙["$7"] "$4}'`
  20. list_server_do_result1=`$mysql_bin -h $mysql_host -u$mysql_user -p$mysql_passwd -e "select SERVICENAME from sysadmin.ty_system_service where ID='$main_value';" | awk 'NR>1 {print NR,$0}'|awk '{print $2}'`"->"
  21. returncode=0
  22. while test $returncode != 1 && test $returncode != 250
  23. do
  24.    exec 3>&1
  25.    dialog --clear --colors --backtitle "$copyright_info" --title "$system_info" \
  26.    --checklist "\n\n$list_server_do_result1选择服务器:" 25 70 14 \
  27.    $list_server_do_result \
  28.    2>$list_server_do_tempfile

  29.    returncode=$?
  30.    
  31.    #对returncode值进行选择分支;
  32.    case $returncode in
  33.    #0为点击[OK]按钮;
  34.    0)
  35.      server_value=`cat $list_server_do_tempfile`
  36.      export server_value
  37.      #对功能ID进行选择
  38.      
  39.      counter=`echo "$server_value"|awk '{print NF}'`
  40.      Gap=`expr 100 / $counter`
  41.      num=0
  42.      case $main_value in
  43.      
  44.      ###########################################安全扫描########################################
  45.      3)
  46.          PCT=$Gap
  47.          (
  48.          while test $PCT -le 100
  49.          do
  50.            num=`expr $num + 1`
  51.            vlist=`echo "$server_value"|awk -F " " '{print

  52. 下载地址:
  53. [url=http://blog.liuts.com/attachment.php?fid=156]点击这里下载文件: SDR1.0.tar.gz[/url]

  54. $num'}'`
  55.            vlist=`echo "$vlist"|awk -F "\"" '{print $2}'`
  56.            
  57.            #通过nmap扫描服务器端口;
  58.            result=`nmap -p $scan_port $vlist|awk 'NR==5,NR==12{print $1"状态:"$2}' 2>&1`
  59.            
  60.            #将扫描结果入库;
  61.            result_up=`$mysql_bin -h $mysql_host -u$mysql_user -p$mysql_passwd -e "update sysadmin.ty_server set SCANPORT='$result' where SERVER='$vlist';" 2>&1`
  62.            if [ -z "$result_up" ]; then
  63.                   result_up_str="[√]ok:$vlist扫描结果$result已成功入库!"
  64.            else
  65.                  result_up_str="[×]error:$vlist扫描结果$result入库失败!"
  66.            fi
  67.            echo "XXX"
  68.            echo $PCT
  69.            echo "\n正在扫描$vlist...\n-------------------------------------------------\n$result"
  70.            echo "XXX"
  71.            PCT=`expr $PCT + $Gap`

  72.            #写运行结果到日志;
  73.            logs="[$(date +'%Y-%m-%d %H:%M:%S')]$result_up_str"
  74.            RecordLog
  75.          done
  76.          ) |dialog --title "$system_info" --gauge "\n\n\n\n\n             开始扫描......" 18 70 0
  77.          exit
  78.          ;;

  79.      ##########################################部署代理########################################
  80.      4)
  81.          #调用代理选择对话框;
  82.          add_agent
  83.          
  84.          #取选择代理的标志;
  85.          agent_value=`cat /tmp/add_agent$main_pid`
  86.          #无选择与取消处理;
  87.          if  [ "$agent_value" != "" ]; then
  88.            if [ "$agent_value" == "0" ]; then
  89.              exit
  90.            fi
  91.          else
  92.            exit
  93.          fi
  94.          
  95.          #进度表显示运行状态;
  96.          PCT=$Gap
  97.          (
  98.          while test $PCT -le 100
  99.          do
  100.            num=`expr $num + 1`
  101.            
  102.            #取第num列以空格分隔的字符(服务器);
  103.            vlist=`echo "$server_value"|awk -F " " '{print

  104. 下载地址:
  105. [url=http://blog.liuts.com/attachment.php?fid=156]点击这里下载文件: SDR1.0.tar.gz[/url]

  106. $num'}'`
  107.            
  108.            #取第2列"号分隔字符串
  109.            vlist=`echo "$vlist"|awk -F "\"" '{print $2}'`         
  110.            
  111.            #循环代理个数;
  112.            for agentkey in $agent_value
  113.             do
  114.              #取第2列"号分隔字符串
  115.              agentkey=`echo "$agentkey"|awk -F "\"" '{print $2}'`
  116.             
  117.              #获取代理crontab类型;
  118.              AGENTCRONTAB=`$mysql_bin -h $mysql_host -u$mysql_user -p$mysql_passwd -e "select AGENTCRONTAB from sysadmin.ty_server_agent where AGENTNAME='$agentkey';" | awk 'NR>1 {print NR,$0}'|cut -b 3-100`
  119.              #创建代理目录;
  120.              sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root@$vlist " mkdir -p /home/tyagent" 2>&1
  121.              result_check_conn=$?
  122.             
  123.              if [ $result_check_conn -eq 0 ]; then
  124.                  
  125.                  #传输代理文件到客户端服务器;
  126.                  scp -S sshto -oConnectTimeout=$ConnectTimeout -i $sysadmin_path/identity $sysadmin_path/tyagent/$agentkey root@$vlist:/home/tyagent 1>&3         
  127.                  result_do=$?
  128.                  if [ $result_do -eq 0 ]; then
  129.                      
  130.                      #非crontab运行;
  131.                      if [ "$AGENTCRONTAB" == "1" ]; then
  132.                          sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root@$vlist " if sed -n '1,100p' /etc/rc.local | grep $agentkey;  then echo '0'; else echo \"/home/tyagent/$agentkey\" >> /etc/rc.local;fi;" 2>&1
  133.                      else               
  134.                          sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root@$vlist " crontab -l > /home/tyagent/cron.tmp;if sed -n '1,100p' /home/tyagent/cron.tmp | grep $agentkey;  then echo '0'; else echo \"$AGENTCRONTAB\" >> /home/tyagent/cron.tmp;fi;crontab /home/tyagent/cron.tmp" 2>&1
  135.                      fi
  136.                      
  137.                      #更新服务器字段代理标志;
  138.                      result_up=`$mysql_bin -h $mysql_host -u$mysql_user -p$mysql_passwd -e "update sysadmin.ty_server set TO$agentkey='Y' where SERVER='$vlist';" 2>&1`
  139.                      if [ -z "$result_up" ]; then
  140.                          result_up_str="[√]ok:$vlist部署代理$agentkey成功!"
  141.                      else
  142.                          result_up_str="[×]error:$vlist部署代理$agentkey成功,但更新数据库失败!($result_up)"
  143.                      fi
  144.                      
  145.                  else
  146.                      result_up_str="[×]error:连接远程主机$vlist失败!"  
  147.                  fi
  148.                  
  149.                  echo "XXX"
  150.                  echo $PCT
  151.                  echo "\n正在$vlist主机部署$agentkey代理。"
  152.                  echo "XXX"
  153.              else
  154.                  result_up_str="[×]error:$vlist部署代理:$agentkey失败,连接服务器出现问题。"
  155.              fi
  156.              PCT=`expr $PCT + $Gap`  
  157.              sleep 1         
  158.              #写运行结果到日志;
  159.              logs="[$(date +'%Y-%m-%d %H:%M:%S')]$result_up_str"
  160.              RecordLog
  161.              done;
  162.              #循环结束;
  163.            done
  164.          ) |dialog --title "$system_info" --gauge "\n\n\n\n\n             准备部署......" 18 70 0
  165.          exit
  166.          ;;

  167.      ##########################################远程终端########################################
  168.      7)
  169.          PCT=$Gap
  170.          (
  171.          while test $PCT -le 100
  172.          do
  173.            num=`expr $num + 1`
  174.            vlist=`echo "$server_value"|awk -F " " '{print

  175. 下载地址:
  176. [url=http://blog.liuts.com/attachment.php?fid=156]点击这里下载文件: SDR1.0.tar.gz[/url]

  177. $num'}'`
  178.            vlist=`echo "$vlist"|awk -F "\"" '{print $2}'`
  179.            
  180.            #检查远程服务器/etc/iptables.sh有无包含192.168.100.0/24 22关键字来判断是否开通远程ssh;
  181.            result=`sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root@$vlist "if sed -ne '/192.168.100.0/{/22/p}' /etc/iptables.sh|grep 192.168.100.0|grep 22; then echo 1; fi; " 2>&1`
  182.            if [ $? -eq 0 ]; then
  183.            
  184.              if [ -n "$result" ]; then
  185.                TOLD="N"
  186.                TOLDstr="关闭"
  187.                resultdo=`sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root@$vlist "sed -i '/192.168.100.0/{/22/d}' /etc/iptables.sh;/etc/iptables.sh" 2>&1`
  188.              else
  189.                TOLD="Y"
  190.                TOLDstr="打开"
  191.                resultdo=`sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root@$vlist "echo \"iptables -A INPUT -s 192.168.100.0/24 -p tcp --dport 22 -j ACCEPT\" >> /etc/iptables.sh;/etc/iptables.sh" 2>&1`
  192.              fi
  193.                   
  194.              #更新服务器标志;
  195.              result_up=`$mysql_bin -h $mysql_host -u$mysql_user -p$mysql_passwd -e "update sysadmin.ty_server set TOLD='$TOLD' where SERVER='$vlist';" 2>&1`
  196.              if [ -z "$result_up" ]; then
  197.                result_up_str="[√]ok:$vlist服务器已$TOLDstr远程终端!"
  198.              else
  199.                result_up_str="[×]error:$vlist开/关远程终端,更新数据库失败!"
  200.              fi

  201.              echo "XXX"
  202.              echo $PCT
  203.              echo "\n正在部署$vlist...\n\n$result_up_str"
  204.              echo "XXX"            
  205.            else
  206.              result_up_str="[×]error:$vlist开/关远程终端失败,连接服务器出现问题。"
  207.            fi
  208.            PCT=`expr $PCT + $Gap`
  209.            sleep 1
  210.            
  211.            #写运行结果到日志;
  212.            logs="[$(date +'%Y-%m-%d %H:%M:%S')]$result_up_str"
  213.            RecordLog            
  214.          done
  215.          ) |dialog --title "$system_info" --gauge "\n\n\n\n\n             准备部署......" 18 70 0
  216.          exit
  217.          ;;
  218.                  
  219.      ##########################################部署日志########################################
  220.      9)
  221.          PCT=$Gap
  222.          (
  223.          while test $PCT -le 100
  224.          do
  225.            num=`expr $num + 1`
  226.            vlist=`echo "$server_value"|awk -F " " '{print

  227. 下载地址:
  228. [url=http://blog.liuts.com/attachment.php?fid=156]点击这里下载文件: SDR1.0.tar.gz[/url]

  229. $num'}'`
  230.            vlist=`echo "$vlist"|awk -F "\"" '{print $2}'`
  231.            
  232.            #写客户端服务器/etc/syslog.conf文件;
  233.            result=`sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root@$vlist "echo \"*.notice;cron.none;authpriv.* @syslog.com.cn\" >> /etc/syslog.conf;/etc/init.d/syslog restart" 2>&1`
  234.            result_do=$?
  235.            if [ $result_do -eq 0 ]; then
  236.              #更新服务器标志;
  237.              result_up=`$mysql_bin -h $mysql_host -u$mysql_user -p$mysql_passwd -e "update sysadmin.ty_server set TOLOG='Y' where SERVER='$vlist';" 2>&1`
  238.              if [ -z "$result_up" ]; then
  239.                      result_up_str="[√]ok:$vlist部署日志客户端成功!"
  240.              else
  241.                result_up_str="[×]error:$vlist部署日志客户端成功,但更新数据库失败!"      
  242.              fi
  243.            else
  244.              result_up_str="[×]error:$vlist部署日志客户端失败,连接服务器出现问题。"
  245.            fi
  246.            echo "XXX"
  247.            echo $PCT
  248.            echo "\n正在部署$vlist...\n\n$result_up_str"
  249.            echo "XXX"
  250.            PCT=`expr $PCT + $Gap`
  251.            sleep 1
  252.            
  253.            #写运行结果到日志;
  254.            logs="[$(date +'%Y-%m-%d %H:%M:%S')]$result_up_str"
  255.            RecordLog  
  256.          done
  257.          ) |dialog --title "$system_info" --gauge "\n\n\n\n\n             准备部署......" 18 70 0
  258.          exit
  259.          ;;

  260. ##########################################部署应用########################################
  261.      10)
  262.          #调用应用选择对话框;
  263.          add_app
  264.          
  265.          #取选择firewall的标志;
  266.          app_value=`cat /tmp/add_app$main_pid`
  267.          
  268.          #无选择与取消处理;
  269.          if  [ "$app_value" != "" ]; then
  270.            if [ "$app_value" == "0" ]; then
  271.              exit
  272.            fi
  273.          else
  274.            exit
  275.          fi
  276.          PCT=$Gap
  277.          #进度表显示运行状态;
  278.          while [ $PCT -le 100 ]
  279.          do
  280.            num=`expr $num + 1`
  281.            
  282.            #取第num列以空格分隔的字符(服务器);
  283.            vlist=`echo "$server_value"|awk -F " " '{print

  284. 下载地址:
  285. [url=http://blog.liuts.com/attachment.php?fid=156]点击这里下载文件: SDR1.0.tar.gz[/url]

  286. $num'}'`
  287.            
  288.            #取第2列"号分隔字符串
  289.            vlist=`echo "$vlist"|awk -F "\"" '{print $2}'`
  290.            #创建应用目录;
  291.            sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root@$vlist " mkdir -p /home/tyagent/$app_value" 2>&1
  292.            result_check_conn=$?
  293.            if [ $result_check_conn -eq 0 ]; then
  294.              scp -S sshto -oConnectTimeout=$ConnectTimeout -i $sysadmin_path/identity $sysadmin_path/tyapp/$app_value root@$vlist:/home/tyagent/$app_value/$app_value 1>&3         
  295.              sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root@$vlist " /home/tyagent/$app_value/$app_value "
  296.               if [ $? -eq 0 ]; then
  297.                  result_up_str="[√]ok:$vlist部署应用:$app_value成功!"
  298.              else
  299.                  result_up_str="[×]error:$vlist部署应用:$app_value失败!"      
  300.              fi
  301.              #echo "XXX"
  302.              echo "$result_up_str..................................................................[$PCT%]"
  303.              #echo "XXX"
  304.            else
  305.              result_up_str="[×]error:$vlist部署应用:$app_value失败,连接服务器出现问题。"
  306.            fi
  307.            PCT=`expr $PCT + $Gap`
  308.            sleep 1
  309.            
  310.            #写运行结果到日志;
  311.            logs="[$(date +'%Y-%m-%d %H:%M:%S')]$result_up_str"
  312.            RecordLog
  313.          done
  314.          #) |dialog --title "$system_info" --gauge "\n\n\n\n\n             准备部署......" 18 70 0
  315.          exit
  316.          ;;        
  317.    
  318.      ##########################################部署防火墙########################################
  319.      11)
  320.          #调用firewall选择对话框;
  321.          add_firewall
  322.          
  323.          #取选择firewall的标志;
  324.          firewall_value=`cat /tmp/add_firewall$main_pid`
  325.          
  326.          #无选择与取消处理;
  327.          if  [ "$firewall_value" != "" ]; then
  328.            if [ "$firewall_value" == "0" ]; then
  329.              exit
  330.            fi
  331.          else
  332.            exit
  333.          fi
  334.          
  335.          #进度表显示运行状态;
  336.          PCT=$Gap
  337.          (
  338.          while test $PCT -le 100
  339.          do
  340.            num=`expr $num + 1`
  341.            
  342.            #取第num列以空格分隔的字符(服务器);
  343.            vlist=`echo "$server_value"|awk -F " " '{print

  344. 下载地址:
  345. [url=http://blog.liuts.com/attachment.php?fid=156]点击这里下载文件: SDR1.0.tar.gz[/url]

  346. $num'}'`
  347.            
  348.            #取第2列"号分隔字符串
  349.            vlist=`echo "$vlist"|awk -F "\"" '{print $2}'`
  350.            scp -S sshto -oConnectTimeout=$ConnectTimeout -i $sysadmin_path/identity $sysadmin_path/firewall/$firewall_value root@$vlist:/etc/iptables.sh 1>&3
  351.            
  352.            result_do=$?
  353.            if [ $result_do -eq 0 ]; then
  354.              sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root@$vlist " if sed -n '1,100p' /etc/rc.local | grep iptables.sh;  then echo '0'; else echo \"/etc/iptables.sh\" >> /etc/rc.local;fi;chmod u+x /etc/iptables.sh;/etc/iptables.sh" 2>&1
  355.              result_up=`$mysql_bin -h $mysql_host -u$mysql_user -p$mysql_passwd -e "update sysadmin.ty_server set TOFIREWALL='Y' where SERVER='$vlist';" 2>&1`
  356.              if [ -z "$result_up" ]; then
  357.                      result_up_str="[√]ok:$vlist部署Firewall成功!"
  358.              else
  359.                result_up_str="[×]error:$vlist部署Firewall成功,但更新数据库失败!"      
  360.              fi
  361.            else
  362.              result_up_str="[×]error:$vlist部署Firewall失败,连接服务器出现问题。"
  363.            fi
  364.            echo "XXX"
  365.            echo $PCT
  366.            echo "\n正在部署$vlist...\n\n$result_up_str"
  367.            echo "XXX"i
  368.            PCT=`expr $PCT + $Gap`
  369.            sleep 1
  370.            
  371.            #写运行结果到日志;
  372.            logs="[$(date +'%Y-%m-%d %H:%M:%S')]$result_up_str"
  373.            RecordLog
  374.          done
  375.          ) |dialog --title "$system_info" --gauge "\n\n\n\n\n             准备部署......" 18 70 0
  376.          exit
  377.          ;;
  378.          
  379.      esac
  380.      ;;
  381.    #*为点击[Cancel]按钮或其它中断。
  382.    *)
  383.      dialog \
  384.           --clear \
  385.           --title "$system_info" \
  386.           --yesno "\n\n确定要取消操作吗?" 10 30
  387.           case $? in
  388.           0)
  389.               break
  390.               ;;
  391.           1)
  392.               returncode=99
  393.               ;;
  394.      esac
  395.    ;;
  396.    esac
  397. done
复制代码
SDR1.0.tar.gz (19.78 KB, 下载次数: 75)

论坛徽章:
0
3 [报告]
发表于 2011-10-15 00:44 |只看该作者
那么好的文章怎么没人顶啊。学习了。期待升级版。

求职 : Linux运维
论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:15:0815-16赛季CBA联赛之山东
日期:2016-10-31 10:40:10综合交流区版块每日发帖之星
日期:2016-07-06 06:20:00IT运维版块每日发帖之星
日期:2016-02-08 06:20:00数据库技术版块每日发帖之星
日期:2016-01-15 06:20:00IT运维版块每日发帖之星
日期:2016-01-15 06:20:00IT运维版块每日发帖之星
日期:2016-01-10 06:20:00黄金圣斗士
日期:2015-11-24 10:45:10IT运维版块每日发帖之星
日期:2015-09-01 06:20:00IT运维版块每日发帖之星
日期:2015-08-13 06:20:00IT运维版块每日发帖之星
日期:2015-07-30 09:40:012015年亚洲杯之巴勒斯坦
日期:2015-05-05 10:19:03
4 [报告]
发表于 2011-10-15 07:40 |只看该作者
好文要顶。呵呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP