2008年1月 归档

  首先我们要了解的是,Linux会在每个终端(包括真实的终端和虚拟终端)端口上关联一个应用程序,这个应用程序就是getty,getty有多种,它们复杂程序有有所不同,如:mingetty只能处理Linux虚拟终端(我们通过Ctrl+Alt+Fn看到的虚拟控制台);agetty不仅可以处理虚拟控制台,还可以串口和调制解调器。mgetty功能最全,可以处理传入的传真、登录,并可以执行锁定和协商可以让同一个调制解调器既能拨入也能拨出。
  • getty输出/etc/issue文件中的内容,并显示提示。在redhat系统中的getty程序使用的是/sbin/mingetty,通过/etc/inittab文件可以查看到。我们可以在/etc/issue文件中定制显示的内容;
  • 用户在getty的提示处输入登录名;
  • getty用指定的登录名作为参数执行login程序;
  • login要求输入口令,并对照/etc/shadow验证口令;
  • login输出/etc/motd(message of tody每日消息),并且运行一个shell;
  • shell执行适当的引导脚本;(.bash_profile .bashrc)
  • shell显示一个提示符,等待输入。
  情况是这样的,我管理着一个集群,有时需要更新这集群上的项目,每次手动写循环很烦人,不停的搞键盘,很累人,下面这个脚本可以让我偷偷懒,同时也减少了出错的机率,其实我使用这个脚本一段时间了,前一段时间我的工作站出了问题,一不要心将分区表删了,丢了一些资料,包括运行这个脚本的环境。花了两个小时重新写了这个脚本,赶快贴出来,下次系统崩溃后还能用得上,呵呵!
  我将脚本命令为upfile.pl,放在/root/syncproject/目录下,同时这个目录下放着多个项目文件夹及一个log文件夹,远端主机上的/home/project/下存放有项目文件,我要保持本地/root/syncproject/目录下的项目是新的,然后运行脚本:
[root@supersun.biz syncproject]#./upfile.pl -h host1,host2 -p project1
  这样就可以更新host1和host2上的project1项目了,rsync生成的日志保存到log文件夹下。
  脚本很简单,但对于我来说挺实用。平时就应该简化自己的工作。

#!/usr/bin/perl
use strict;
use Getopt::Std;

#定义默认变量
use vars qw/
$LOCAL_PATH
$REMOTE_PATH
$LOG_PATH
@HOST_LIST
@PROJECTS
$PROJECT_NAME
/;
#本地的项目存储路径
#远端的项目存储路径
#日志存诸路径
#默认的主机列表
#可使用的项目名称
$LOCAL_PATH="/root/syncproject/";
$REMOTE_PATH="/home/project/";
$LOG_PATH="/root/syncproject/";
@HOST_LIST=qw/host1 host2 host3/;
@PROJECTS=qw/project1 project2/;

#定义命令行选项
#h 主机列表hosts
#p 项目名project

my %opts;

getopt("hp",\%opts);

#处理命令行传入的主机列表
@HOST_LIST=split /,/,$opts{h} if  defined $opts{h};
#检查命令行传入的项目名是否可用
if(defined $opts{p}) {
        $PROJECT_NAME=$opts{p};
        my %TEST_PROJECTS;
        @TEST_PROJECTS{@PROJECTS}=@PROJECTS;
        unless(exists $TEST_PROJECTS{$PROJECT_NAME}){
                print "错误的项目名:$PROJECT_NAME\n可用的项目名:@PROJECTS\n";
                useage();
        }
}else{
        print "项目名未定义\n";
        useage();
}

#生成命令行,并fork多进程进行更新

foreach my $HOST(@HOST_LIST){
        my $COMMAND="rsync -av --delete ".$LOCAL_PATH.$PROJECT_NAME."/ ".$HOST.":"
.$REMOTE_PATH.$PROJECT_NAME."/";
        if(fork){
                print "更新$HOST上的$PROJECT_NAME\n";
                print "Command:$COMMAND\n";
        }else{
                my $output=`$COMMAND`;
                if($? eq 0){
                        print "$HOST更新成功\n";
                        my $file=$LOG_PATH."log/".$HOST;
                        open FD,'>',$file;
                        print FD join "\n",map $_="$HOST:$_",split /\n/,$output;
                        print FD "\n";
                        close FD;
                }else{
                        print "$HOST更新失败\n";
                        print join "\n",map $_="$HOST:$_",split /\n/,$output;
                        print "\n";
                }
                exit;
        }
}

#等待子进程
1 while wait_a_kid;

#等待子进程的例程

sub wait_a_kid {
        my $pid=wait;
        return 0 if $pid<0;
        1
}

#使用说明

sub useage {
        die "$0 [-h host1,host2,host3...] -p PROJECT_NAME\n";
}

年终总结终于写完了

| 评论(2) | 暂无引用通告
  还没到年终的时候我就提醒自己早点写年终总结,但还是拖到现在,拖到该交年终总结的前一天。其实也不是忙才拖到现在,而是因为懒,从上学开始就讨厌写东西,真是不忍去想以前在校读书时作文课是怎么过的。
  以下就是憋了老半天才写完的年终总结了:


个人年终总结

  2007年业已过去,在此,回顾一下在过去的一年里所做的工作,总结一下工作中的得失,以利用在新的一年里更好的开展工作,保留好的工作习惯,弥补不足,提高工作效率,为公司创造良好的网络环境及提高个人的技术水平。
  在过去一年的里,公司的网络工作重点在于网络维护上,在此我将工作中的网络维护工作分为以下几类:

机房管理

  每天早晚准时检查机房的环境状况,保证机房恒温恒湿,偶尔发现机房内空调出现故障时尽快联系相关厂商进行修理;
  关注设备的运行状况,当服务器及网络设备报警,迅速进行检修;
  对新购进的服务器的操作系统的安装、服务架设及上架等事务。
  
系统部署更新

  配合网站管理的同事搭建及调整内容管理系统;
  xx信息管理系统和xx系统的部署更新;
  xx网xx论坛的搭建及调整等;
  xx系统、xx系统、xx系统、xx评估系统、xx系统等的部署和更新;

监控系统及网络安全:

  在xx同事的技术支持下搭建DWIT系统运行质量监控系统,记录系统运行的性能参数,并生成统计图,更直观的反应出系统的运行状况;
  搭建CACTI系统性能监控系统,此套系统的功能与DWIT系统运行质量监控系统的功能有些重叠,但此套系统在图形管理方面更优秀,便于系统的管理;
  搭建NAGIOS主机服务监控系统,监控各台服务器及服务器上所运行服务的监控;
  搭建时间服务器同步服务器时钟,便于更准确的了解服务器的运行状况;
  建立中央日志主机,将服务器的日志统一发送到日志主机进行分析和处理,同时也将防火墙的日志发送到日志主机,这样可以在较好的了解网络的运行状况。
  构建防火墙访问规则,禁止非授权用户的访问;
  使用端口扫描程序、漏洞扫描程序对运行中的系统进行检测,发现漏洞及时修补;

备份管理

  定期执行所运行项目应用系统的备份,包括xx论坛等;
  各应用系统所用到的数据库的备份,如:xx系统、xx管理系统;
  个别应用系统数据的导出和同步;

服务的维护

  监控集群的运行状况,保证集群中各台主机的负载的均衡,发现个别节点服务中断,迅速检查服务中断原因,并最快时间启用服务;
  根据业务需求,增加减小集群中的服务器,及调整集群的参数;
  网站静态网页的上传更新,以及后来搭建FTP服务器,由网站管理人员更新网站页面信息,站点下线后对原站点数据的备份存档;
  管理公司的邮件服务器,并对服务器上文件服务的管理,包括过期文件的清理,更新常用的应用软件等;
  尽可能的实现网络管理、系统管理工作的自动化以减少工作中的失误,包括编写各种系统管理脚本,应用优秀的系统管理工具;

技术支持

  整理常用应用软件到文件服务器了,便于大家下载使用;
  帮助同事杀毒防毒及修复受损的操作系统;
  在进行会议支持的过程中,进行局域网的组建及其他技术支持;
  对运行部门同事的网络基础知识的培训。

  以上就是我在过去一年中我完成的一些工作,发现自己在网络工作的文档化方面还有所欠缺,希望在新的一年中能弥补此不足,更好的完善公司的网络环境。

                                supersun
                              2008年1月14日

ntp服务器简单配置

| 暂无评论 | 暂无引用通告
关于时间服务

  Network Time Protocol(NTP,网络时间协议)用于同步它所有客户端时钟的服务。NTP服务器将本地系统的时钟与一个公共的NTP服务器同步然后作为时间主机提供服务,使本地网络的所有客户端能同步时钟。

  同步时钟最大的好处就是相关系统上日志文件中的数据,如果网络中使用中央日志主机集中管理日志,得到的日志结果就更能反映真实情况。在同步了时钟的网络中,集中式的性能监控、服务监控系统能实时的反应系统信息,系统管理员可以快速的检测和解决系统错误。

安装配置NTP服务

  下面将介绍NTP服务器的简单配置:

  一般的Linux发行版都会带ntp软件包,如果你的系统中还没有安装,就使用rpm命令安装此包,以下以fedora core 6系统为例配置一台时间服务器:

[root@supersun.biz root]# rpm -ivh ntp-4.2.2p1-3.i386.rpm
warning: ntp-4.2.2p1-3.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing...                ########################################### [100%]
   1:ntp                    ########################################### [100%]

  编辑配置文件/etc/ntp.conf

restrict default nomodify notrap noquery
restrict 127.0.0.1
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org

server  127.127.1.0
fudge   127.127.1.0 stratum 10

  斜体部分是我添加的部分,设定可以使用时间服务器的两个网段的内网地址及使用的外部的时间服务器。现在我们对配置做一个简要的解释:
  第一行restrict、default定义默认访问规则,nomodify禁止远程主机修改本地服务器配置,notrap拒绝特殊的ntpdq捕获消息,noquery拒绝btodq/ntpdc查询(这里的查询是服务器本身状态查询)。
配置文件的最后两行作用是当服务器与公用的时间服务器失去联系时以本地时间为客户端提供时间服务。

端口

  ntp使用udp协议,记得开放其123端口。

启动NTPD


  启动ntpd守护进程:
service ntpd start


客户端的配置


  以root身份运行周期性任务:
[root@supersun root]# crontab -e
  添加以下内容,每15分钟更新一下时间:
*/15 * * * * ntpdate ntp.supersun.biz
  此处的ntpdate命令包含在ntp软件包中,记得确认系统中是否已安装。

nagios邮件通知脚本

| 暂无评论 | 暂无引用通告
  nagios默认使用mail发送邮件通知,系统如果关闭sendmail的话,邮件就不会被发出去,因此我写了一个用Perl脚本,通过Email::Send模块来发送邮件通知。
  我将这个脚本命名为notify_via_smtp,并将其保存在Nagios安装目录的libexec目录下,脚本内容如下:

#!/usr/bin/perl -w
use strict;
use Email::Send;
use Getopt::Std;



my %opts;
getopt('ts',\%opts);
my $subject=$opts{s};
my $receiver=$opts{t};
my $sender='nagios@supersun.biz';
my $string=join '',<>;

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime;

$year+=1900;
my @month=qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
my @week=qw(Sun Mon Tue Wed Thu Fri Sat);


my $time=$week[$wday].",".$mday.' '.$month[$mon].' '.$year.' '.$hour.':'.$min.':'.$sec.' +0800';
my $msg=<< "__MESSAGE__";
To: $receiver
From: $sender
Subject: $subject
Date: $time

  $string
__MESSAGE__
my $sendit= Email::Send->new({mailer => 'SMTP'});
$sendit->mailer_args([Host => 'smtp.supersun.biz']);
$sendit->send($msg);

注意加粗字体部分变更为你自定义的配置。
然后定义command,即编缉Nagios安装目录下的etc/command.cfg文件或者添到自定义的命令文件中,内容如下:

define command{
        command_name    host-notify-by-smtp
        command_line    /usr/bin/printf "%b" "***** Nagios 2.10 *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" |  $USER1$/notify_via_smtp -s "Host $HOSTSTATE$ alert for $HOSTNAME$!" -t $CONTACTEMAIL$
        }
define command{
        command_name    notify-by-smtp
        command_line    /usr/bin/printf "%b" "***** Nagios 2.10 *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | $USER1$/notify_via_smtp -s "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -t $CONTACTEMAIL$
        }


然后定义联系人:
define contact{
        contact_name                    supersun
        alias                           supersun
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-by-smtp
        host_notification_commands      host-notify-by-smtp
        email                           supersun@supersun.biz
        }



ArabHotel01.jpg
     帆船酒店(BurjAl-ArabHotel)位于阿拉伯联合酋长国第二大城市迪拜市,因为饭店设备实在太过高级,远远超过五星的标准,只好破例称它做七星级。

  帆船酒店建立在离海岸线280米处的人工岛上。它宛如一艘巨大而精美绝伦的帆船倒映在蔚蓝海水中。除了别致的外形,酒店还有全年普照的阳光和阿拉伯神话式的奢华----躺在床上就可欣赏到一半是海水、一半是沙漠的阿拉伯海湾美景;饭店内设计金碧辉煌,黄金打造的家具和360度海景,每个房间都在170平方米以上,为两层的复式结构,卫生间超过25平方米,设有巨大的按摩浴缸;大堂的地板上、房间的门把手、卫生间的配件以纯金或镀金而做,金碧辉煌。

ArabHotel02.jpg
 阿联酋的帆船酒店是世界上唯一一座七星级的酒店,它建在大海的中央,建筑外形就像一块迎风飘扬的风帆因此得名。在奢侈的阿联酋,他就是最奢侈的代表,它的地位已经不是一座酒店这么简单,他已经是游人来到阿联酋一定要去看看的地方,俨然像一个旅游的景点。随着它的名气蜚声国际,渐渐的也成为了阿联酋奢侈的一种象征。

"帆船"共56层、高321米   

  帆船酒店到底豪华到何种程度?Jumeirah集团相关人士告诉记者,这个远远望去像一艘扬帆远航的船形建筑,共有56层,321米高。由于酒店是以帆为外观造型,因此饭店到处都是与水有关的主题。一进饭店门的两大喷水,不时有不同的喷水方式,每一种皆经过精心设计,约15~20分钟就换一种喷法。

ArabHotel03.jpg
  酒店的客房全部由复式套房组成,最小的房间是170平方米的总统套房,总计有202套。最豪华的套房为780平方米的皇家套房,设在酒店的第 25层,其中设有一个电影院、两间卧室、两间起居室和一个餐厅,其出入都有专用电梯,墙上挂的画则全是真迹。每进入房间,都有一个管家会为你解释房内各项高科技设施如何使用。

  据悉,当时酒店装修时,仅黄金就用了40吨,其豪华程度令人叹为观止。酒店内部触目皆"金",不要说家具,连门把、厕所的水管,甚至是一张便条纸,都"爬"满黄金。

BurjalArabHotel.jpg  去酒店餐厅可"上天下海"

  酒店的餐厅更是让人觉得匪夷所思:其中AI-Mahara海鲜餐厅所用的海鲜原料,是酒店在深海里为顾客捕捉到的最新鲜的海鲜。客人在这里进膳的确是难忘的经历------要动用潜水艇接送。从酒店大堂出发直达AI-Mahara海鲜餐厅,虽然航程短短3分钟,可已进入到了一个神奇的海底世界,沿途有鲜艳夺目的热带鱼在潜水艇两旁游来游去。坐在舒适的餐厅椅上,环顾四周的玻璃窗外,珊瑚、海鱼构成了一幅流动的景象。空中也有餐厅,客人只需搭乘快速电梯,33秒内便可直达屹立于阿拉伯海湾上200米高空的AI-Mahara餐厅,这个餐厅采用了太空式的设计,让人仿佛进入太空世界。

  在建筑物外侧,则建有一个可供直升机起降的停机坪。住客甚至可以要求酒店派直升机接送,在15分钟的航程里,客人率先从高空鸟瞰迪拜的市容,然后直升机才徐徐降落在酒店的直升机坪上。

  酒店房价也很"豪华"

  当然,帆船酒店的房价也堪称"豪华":最低房价1600美元,最高18000美元。即使是参观者,也需要支付每人200美元的费用。

关于此归档

这里是2008年1月的所有日记,它们按照时间从新到老排序。

上一篇日记2007年12月

下一篇日记2008年3月

首页归档页可以看到最新的日记和所有日记。