




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
shell+Dialog+mysql+python+mod_perl前言 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 keylogs 系统操作日志目录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、rootsysadmin #go3、输入管理员密码:4、验证通过进入管理窗口。八、前端应用/attachment.php?fid=1481、定制作业* */1 * * * /var/www/tyAdmin/cron/TyserverwebScan30 0 * * * /var/www/tyAdmin/cron/TyserverScan2、配置将ServerLoglist.pm、ServerScanport.pm、ServerScanweb.pm复制到/opt/apache/perl/modules/Apache目录#vi httpd.confServerName ServerAErrorLog /var/log/apache//error.logCustomLog /var/log/apache//access.log combinedDocumentRoot /var/www/tysysadminScriptAlias /cgi-bin/ /var/www/tysysadmin/cgi-bin/SetHandler perl-scriptPerlResponseHandler ModPerl:RegistryPerlOptions +ParseHeadersPerlSendHeader OnOptions +ExecCGIOrder Deny,AllowDeny from allAllow from /Order Deny,AllowDeny from allAllow from /PerlRequire /var/www/tysysadmin/cgi-bin/index.cgiSetHandler perl-scriptPerlHandler Apache:ServerLoglistSetHandler perl-scriptPerlHandler Apache:ServerScanportSetHandler perl-scriptPerlHandler Apache:ServerScanweb3、服务器日志时时跟踪0/ServerLoglist4、服务器端口扫描0/ServerScanport5、服务器WEB状态监控0/ServerScanweb九、安装1、tar -zxvf SDR1.0.tar.gz2、cd SDR1.03、vi config 修改成实际参数sysadmin_path=/home/SDR1.0mysql_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.0copyright_info=ZbZ7天涯在线网络有限公司 网络系统部 作者:刘天斯 邮箱:4、创建Mysql数据库sysadmin,并导入SDR1.0/sql/sysadmin.sql5、修改系统环境5.1环境变量:vi /etc/profileexport PATH=$PATH:/usr/local/bin:/home/SDR1.05.2配置ssh链接ln -s /usr/bin/ssh /usr/bin/sshto5.3、修改mysql客户端编码vi /etc/fclientdefault-character-set=utf86、安装nmapyum -y install nmap7、生成公私钥#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_keys8、因修改了环境变量,退出终端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全局-*全局:对下级窗口有效,生命期为主窗口关闭。十一、处理模块代码#!/bin/sh#Function:select checklist server#Writer:liutiansi#Mail:#Date:2007-11-03 23:57source configsource checkonlinelist_server_do_tempfile=list_server_do_tempfile 2/dev/null | list_server_do_tempfile=/tmp/server$main_pidtrap 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#过滤服务器列表case $main_value in 9) sqltj= and TOLOG=N ; 16) sqltj= and TOFIREWALL=N ; esaclist_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 NR1 print NR,$0|awk print $2 $3日志$5终端$6防火墙$7 $4list_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 NR1 print NR,$0|awk print $2-returncode=0while test $returncode != 1 & test $returncode != 250do exec 3&1 dialog -clear -colors -backtitle $copyright_info -title $system_info -checklist nn$list_server_do_result1选择服务器: 25 70 14 $list_server_do_result 2$list_server_do_tempfile returncode=$? #对returncode值进行选择分支; case $returncode in #0为点击OK按钮; 0) server_value=cat $list_server_do_tempfile export server_value #对功能ID进行选择 counter=echo $server_value|awk print NF Gap=expr 100 / $counter num=0 case $main_value in #安全扫描# 3) PCT=$Gap ( while test $PCT -le 100 do num=expr $num + 1 vlist=echo $server_value|awk -F print下载地址:url=/attachment.php?fid=156点击这里下载文件: SDR1.0.tar.gz/url$num vlist=echo $vlist|awk -F print $2 #通过nmap扫描服务器端口; result=nmap -p $scan_port $vlist|awk NR=5,NR=12print $1状态:$2 2&1 #将扫描结果入库; 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 if -z $result_up ; then result_up_str=ok:$vlist扫描结果$result已成功入库! else result_up_str=error:$vlist扫描结果$result入库失败! fi echo XXX echo $PCT echo n正在扫描$vlist.n-n$result echo XXX PCT=expr $PCT + $Gap #写运行结果到日志; logs=$(date +%Y-%m-%d %H:%M:%S)$result_up_str RecordLog done ) |dialog -title $system_info -gauge nnnnn开始扫描. 18 70 0 exit ; #部署代理# 4) #调用代理选择对话框; add_agent #取选择代理的标志; agent_value=cat /tmp/add_agent$main_pid #无选择与取消处理; if $agent_value != ; then if $agent_value = 0 ; then exit fi else exit fi #进度表显示运行状态; PCT=$Gap ( while test $PCT -le 100 do num=expr $num + 1 #取第num列以空格分隔的字符(服务器); vlist=echo $server_value|awk -F print下载地址:url=/attachment.php?fid=156点击这里下载文件: SDR1.0.tar.gz/url$num #取第2列号分隔字符串 vlist=echo $vlist|awk -F print $2 #循环代理个数; for agentkey in $agent_value do #取第2列号分隔字符串 agentkey=echo $agentkey|awk -F print $2 #获取代理crontab类型; AGENTCRONTAB=$mysql_bin -h $mysql_host -u$mysql_user -p$mysql_passwd -e select AGENTCRONTAB from sysadmin.ty_server_agent where AGENTNAME=$agentkey; | awk NR1 print NR,$0|cut -b 3-100 #创建代理目录; sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root$vlist mkdir -p /home/tyagent 2&1 result_check_conn=$? if $result_check_conn -eq 0 ; then #传输代理文件到客户端服务器; scp -S sshto -oConnectTimeout=$ConnectTimeout -i $sysadmin_path/identity $sysadmin_path/tyagent/$agentkey root$vlist:/home/tyagent 1&3 result_do=$? if $result_do -eq 0 ; then #非crontab运行; if $AGENTCRONTAB = 1 ; then 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 else 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 fi #更新服务器字段代理标志; 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 if -z $result_up ; then result_up_str=ok:$vlist部署代理$agentkey成功! else result_up_str=error:$vlist部署代理$agentkey成功,但更新数据库失败!($result_up) fi else result_up_str=error:连接远程主机$vlist失败! fi echo XXX echo $PCT echo n正在$vlist主机部署$agentkey代理。 echo XXX else result_up_str=error:$vlist部署代理:$agentkey失败,连接服务器出现问题。 fi PCT=expr $PCT + $Gap sleep 1 #写运行结果到日志; logs=$(date +%Y-%m-%d %H:%M:%S)$result_up_str RecordLog done; #循环结束; done ) |dialog -title $system_info -gauge nnnnn准备部署. 18 70 0 exit ; #远程终端# 7) PCT=$Gap ( while test $PCT -le 100 do num=expr $num + 1 vlist=echo $server_value|awk -F print下载地址:url=/attachment.php?fid=156点击这里下载文件: SDR1.0.tar.gz/url$num vlist=echo $vlist|awk -F print $2 #检查远程服务器/etc/iptables.sh有无包含/24 22关键字来判断是否开通远程ssh; result=sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root$vlist if sed -ne //22/p /etc/iptables.sh|grep |grep 22; then echo 1; fi; 2&1 if $? -eq 0 ; then if -n $result ; then TOLD=N TOLDstr=关闭 resultdo=sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root$vlist sed -i //22/d /etc/iptables.sh;/etc/iptables.sh 2&1 else TOLD=Y TOLDstr=打开 resultdo=sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root$vlist echo iptables -A INPUT -s /24 -p tcp -dport 22 -j ACCEPT /etc/iptables.sh;/etc/iptables.sh 2&1 fi #更新服务器标志; 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 if -z $result_up ; then result_up_str=ok:$vlist服务器已$TOLDstr远程终端! else result_up_str=error:$vlist开/关远程终端,更新数据库失败! fi echo XXX echo $PCT echo n正在部署$vlist.nn$result_up_str echo XXX else result_up_str=error:$vlist开/关远程终端失败,连接服务器出现问题。 fi PCT=expr $PCT + $Gap sleep 1 #写运行结果到日志; logs=$(date +%Y-%m-%d %H:%M:%S)$result_up_str RecordLog done ) |dialog -title $system_info -gauge nnnnn准备部署. 18 70 0 exit ; #部署日志# 9) PCT=$Gap ( while test $PCT -le 100 do num=expr $num + 1 vlist=echo $server_value|awk -F print下载地址:url=/attachment.php?fid=156点击这里下载文件: SDR1.0.tar.gz/url$num vlist=echo $vlist|awk -F print $2 #写客户端服务器/etc/syslog.conf文件; result=sshto -i $sysadmin_path/identity -oConnectTimeout=$ConnectTimeout root$vlist echo *.notice;cron.none;authpriv.* /etc/syslog.conf;/etc/init.d/syslog restart 2&1 result_do=$? if $result_do -eq 0 ; then #更新服务器标志; 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 if -z $result_up ; then result_up_str=ok:$vlist部署日志客户端成功! else result_up_str=error:$vlist部署日志客户端成功,但更新数据库失败! fi else result_up_str=error:$vlist部署日志客户端失败,连接服务器出现问题。 fi echo X
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年消化内科肠胃镜检查操作答案及解析
- 2025年职业病防护知识检测答案及解析
- 2025年口腔科根管治疗关键步骤考核模拟试卷答案及解析
- 2025年介入血管外科手术操作技巧考核答案及解析
- 2025年康复心理学关键概念及疗效评估模拟试卷答案及解析
- 2025年精神科疾病诊断与治疗试题答案及解析
- 2025年公共卫生学公共卫生学理论知识考核模拟试题答案及解析
- 2025年内分泌学糖尿病患者的营养护理期末考试答案及解析
- 2025年康复医学综合病例分析测试卷答案及解析
- 2025年药学院药物配方合理性评价试卷答案及解析
- 科普:农药毒性分类
- 陈阅增普通生物学第1篇3细胞结构与细胞通讯教学课件
- 练习使用显微镜 全国公开课一等奖
- 【执业药师考试】执业药师历年真题
- 2023年高考地理(上海卷)-含答案
- 比重式精选机的使用与维护
- FZ/T 81004-2022连衣裙、裙套
- GB/T 34875-2017离心泵和转子泵用轴封系统
- 细胞培养技术培训课件
- 故障录波器课件
- 管片质量问题原因分析及控制措施
评论
0/150
提交评论