通过COM口管理Linux服务器

  本文简要地介绍了如何通过常见的COM口进行Linux服务器的控制台的扩展,具有实用性和简易性,不受服务器网络等条件的限制,可以方便地管理实际生产环境中的Linux服务器。

  说到管理Linux服务器,大家会有很多种不同的办法:键盘+显示器、通过网络登陆、基于WEB的工具、X系统下的图形工具等等,这些方法用在普通的服务器或者自己 的PC服务器上是没有任何问题的,但是要管理一台24X7模式的服务器,确保在任何情况下都能直接快捷地管理到服务器,就不是那么容易了。

  对比以上说到的几种方式:

X系统下的图形工具。这当然是界面很友好的方式了,而且X系统也可以通过网络扩展到远程,但网络毕竟不是这么可靠,如果服务器的网络瘫痪了,你正好需要远程解决网络的问题,那该怎么做?

基于WEB的工具。这种方式的界面也是相当友好,如webadmin,但是由于安全方面的问题,这些工具是不会安装在真正重要的服务器上的,另外这种方式也受限于网络;

通过网络登陆。这是常用的办法,一般服务器会对信赖的远程站点开放SSH服务,以便维护人员可以远程登陆进行日常维护,这是很安全的,但很不幸它还是基于网络的,当然也受限于网络;

键盘+显示器。这是最保险的办法,笔者都建议使用这种最保险的办法,但是很不幸这也是有缺陷的,就是有很多服务器都不配备显示器和键盘,就算有,也只是安装系统时使用,一旦投入生产运行就不再使用显示器和键盘了。

  其实对于UNIX/Linux系统的服务器,可以通过COM口即串行口来扩展系统的控制台,作为另外的途径管理服务器。

  CONSOLE,即控制台,是系统输出管理信息的字符输出设备,这些管理信息是由内核产生,比如系统日志、告警信息等。Linux下默认的控制台就是键盘和显示器,而一些老式的SUN、HP、IBM服务器则使用串行口接Text Terminal[1](字符终端,如著名的DEC的VT100)作为控制台,这也是这次将要介绍的方式。

  字符终端在大型机时代用得比较多,一个大型机通常联接许多终端,每个终端没有处理能力,只是简单地用键盘输入和从屏幕输出结果,处理过程都是由大型机完成。字符终端屏幕多为黑白字符型的,不具备图形显示功能。这里介绍的Text Terminal和大型机的终端是一样的,只不过市场上早就没有新的终端设备了,现在都是通过应用程序模拟一个终端,叫虚拟终端,如WINDOWS的超级终端就是常用的一个虚拟终端程序,在管理工作站上用打开超级终端(使用正确的速率),就相当于一个终端了。

  这种通过串行口实行CONSOLE功能是广泛使用的,如CISCO的路由器,都是通过这种方式进行设备的管理,小小的一条CONSOLE线就相当于一台PC的显示器加键盘,这无疑为路由器省下了许多不必要的配件,而事实上部分CISCO的设备就是一台PC,如思科PIX515防火墙,只要你插上一块PCI的显卡到PCI槽,接上显示器,按下PIX的开关,你就可以看到一台BX主板、奔腾II代350MHZ处理器、128M内存电脑的启动信息,和一台普通电脑启动是没有任何区别的。当PIX完成自检后,控制台就转到CONSOLE口上了,而那个RJ45接口的CONSOLE口,其实就是一个COM口,只是接口形式不是9针D形口而己。

  现在可以明确我们需要做的工作了:使用管理工作站的虚拟终端程序模拟一个字符终端设备,通过COM口对COM口的形式将Linux的CONSOLE重定向到该虚拟终端,以实现从虚拟终端控制Linux服务器。步骤如下:

  1、制作交叉线

  两台电脑要用COM口互联起来需要一种"NULL MODEM CABLE","NULL MODEM CABLE"直译过来大致是"交叉MODEM线",和网线的交叉线意思相近,这是用来"背靠背"联接两个DTE设备的,两头都是9针D型母接头,分别插入管理工作站和服务器的COM口中,为了方便标识建议都接第一个COM口。这种线可以自己制作,也可以去电脑城买,最方便的是有CISCO的标准CONSOLE线加RJ45转9针D型母接头的转接头(部件号74-0495-01),可以直接使用。自己制作可以参考以下的线序:

缩写引脚定义方向引脚定义
RxDReceive Data 2<----3 TxD Transmit Data
TxDTransmit Data 3---->2 RxD Receive Data
  +-->6 DSR Data Set Ready
DTRData Terminal Ready 4--+-->1 DCD Carrier Detect
GNDSignal Ground 5<---->5 GND Signal Ground
DCDCarrier Detect 1<--+ 
DSRData Set Ready 6<--+--4 DTR Data Terminal Ready
RTSRequest To Send 7---->8 CTS Clear To Send
CTSClear To Send 8<----7 RTS Request To Send
RIRing Indicator 9(not used)

  制作时需要把Txd与Rxd、CTS与RTS、GND与GND、DTR与DSR&DCD交叉相联,DSR&DCD表示这两个引脚串联在一起作为一个引脚信号。更多的详细介绍参见Serial-HOWTO[3]。

  2、测试联通性

  管理工作站和服务器接上交叉线后,可以简单地来测试一下这条线是否起作用。在管理工作站上用超级终端新建一个联接,速率9600,8数据位,1停止位,无奇偶校验位,无硬件"Flow control";在服务器上echo '1'>/dev/ttyS0(需要ROOT权限),在管理工作站超级终端里观察是否能收到数字1,如果能收到就表明联接无问题。如果不能收到则要在服务器上检查一下各信号引脚是否正确,使用命令"statserial /dev/ttyS0"可以查看当前串行口的状态(在CABLE对端不接管理工作站时或者线序错误时DSR状态为0),联接状态如下:

Device: /dev/ttyS0
Signal NamePin(25)Pin(9)Direction (computer)StatusFull Name
-------------------------------
FG1---Frame Ground
TxD23out-Transmit Data
RxD32in-Receive Data
RTS47out1Request To Send
CTS58in0Clear To Send
DSR66in1Data Set Ready
GND75--Signal Ground
DCD81in0Data Carrier Detect
DTR204out1Data Terminal Ready
RI229in0Ring Indicator

  3、从POST开始

  这是很多电脑都无法实现的功能,这主要取决于主板BIOS是否支持。POST(Power On Self Test)即我们通常说的自检,我们可以看到系统的基本信息及检查过程,当然也有可能有出错的提示信息及相应的处理提示,有一些型号的服务器主板(如INTEL原装NL440BX)可以将POST重定向到COM口,这样我们可以接一个终端在COM口上便能看到POST过程,当然也可以通过终端操作,完全不需要键盘和显示器。可惜一般情况下我们的主板并不支持这项功能,但是没有关系,我们可以先设定好BIOS参数(Halt On 设置为None)忽略无关紧要的出错信息,让每次系统自检都顺利通过,这样系统便能顺利进入硬盘启动了。

  4、重定向GRUB

  也许你有几个系统(如FreeBSD),或者有新的内核需要进行测试,你可能希望通过COM口来选择系统,将GRUB重定向到COM口也是可能的。我们在GRUB的manual页[4]可以看到其支持seriral终端,在GRUB配置文件第一条Title的前面加入两行如下:

serial --unit=0 --speed=38400
terminal serial console

  我们便能从接在COM口上的终端中看到GRUB的提示信息,通过上、下键选择光带就可以正确地进入各个系统了。LILO的用法类似,请参阅LILO的手册页。

  5、重定向CONSOLE

  为了能够控制Linux服务器启动过程,我们需要传递一些参数到Linux内核中,从serial-console[2]中我们可以看到只需要将console=ttyS0,9600传递到内核中就可以实现CONSOLE重定向到串口。当然9600的速度太慢,我们可以使用38400的速率,这样显示的速度就和启动时显示器上显示的速度差不多了。我的服务器使用GRUB,所以我的/boot/grub/menu.lst文件中kernel语句如下:

kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ console=tty0 console=ttyS0,38400

  现在重新启动Linux服务器,打开超级终端,不出意外就能看到平时在显示器上才看得到的启动信息,当然你也可以按"i"键进入交互式的启动模式,当然在不小心踢掉电源后也能轻松输入"Y"进行文件系统检测,是不是很好用?不过启动完了系统后怎么就停在那里不动了?好像Linux很笨啊,它居然不知道我想从这里登录进系统?不要怪Linux,我们马上就来解释为什么会这样以及解决办法。

  6、开启ttyS0登陆

  其实Linux启动时的信息都是由KERNEL显示的,缺省情况下启动完毕了后init再运行mingetty来提供6个虚拟终端来登陆系统,这可以在/etc/inittab文件中清楚地看到。其实login和内核是没有关系的,所以如果只是在内核中加入参数使其能从COM口交互式地操作并不代表能从超级终端登录系统,我们需要另外运行一个提供从串口登录能力的程序,这个程序就是agetty,它是属于util-Linux软件包中的一员,大家可以参考其man手册页以获得更多的信息,这些信息在其他的文档[1][3]中也都提及到了。我在服务器的/etc/inittab文件中加了一行如下:

S0:2345:respawn:/sbin/agetty -L 38400 ttyS0

  这样我们就能从超级终端登录系统了,很好用吧。

  7、一些经验

  使用ttyS0登录还有一些小的窍门和经验,以下是我的经验:

  COM口的传输距离有限制,普通的线缆只有15米的有效距离,建议使用5类双绞线,可以扩展到50米仍能正常操作;

  大家一般会想使用root从ttyS0登录,但是默认的这是不行的,我们需要把该终端加入到文件/etc/securetty中,就是说终端ttyS0是安全的终端,可以使用root登录;

  如果服务器长时间开着的话,最好每次都使用exit退出该终端,因为如果不退出来的话,下次再登陆可能会出现输入乱码导致终端不可用等问题,而在登录提示符下输入乱码则无关紧要;

  如果你是通过这种方法管理一台实际24X7开着的服务器的话,你可能会有时发现在终端中按回车没有任何反映,有一种可能性就是系统在停电后再开机出现不能启动NFS和sendmail之类的服务,就这样卡在那里死锁住了,这在电源不稳定的情况下尤其多见,所以一定要给你的Linux服务器接上UPS不间断电源,或者在系统BIOS里设置断电后不再启动系统(如果它不是太重要的话),在这种情况下只有按键盘重新启动或者直接断电再重新启动一次,检查启动过程到底发生了什么事情,一般只需要检查一遍硬盘就没有问题了;

  如果你的ttyS0出现乱码没有办法使用的话,可以尝试着从网络登陆,把/etc/inittab中ttyS0那一行注释,使用"init q"命令停止通过inittab启动的agetty,然后再重新取消/etc/inittab中的注释,再次"init q"命令启动agetty,不出意外就能恢复正常了。

  结束语

  到此我们就方便地管理没有显示器和键盘的Linux服务器了,实际生产中可以使用终端服务器代替管理工作站来管理非常多的服务器。简单地说终端服务器有许多COM口,可以同时连接多个服务器(或者网络设备如思科路由器)的CONSOLE,以实现集中式管理。Linux也可以作为优秀的终端服务器,我们将另作介绍。

(0)

相关推荐

  • 通过COM口管理Linux服务器

    本文简要地介绍了如何通过常见的COM口进行Linux服务器的控制台的扩展,具有实用性和简易性,不受服务器网络等条件的限制,可以方便地管理实际生产环境中的Linux服务器. 说到管理Linux服务器,大家会有很多种不同的办法:键盘+显示器.通过网络登陆.基于WEB的工具.X系统下的图形工具等等,这些方法用在普通的服务器或者自己 的PC服务器上是没有任何问题的,但是要管理一台24X7模式的服务器,确保在任何情况下都能直接快捷地管理到服务器,就不是那么容易了. 对比以上说到的几种方式: X系统下的图形

  • 阿里云云服务器远程连接管理Linux服务器图文教程

    远程连接Linux云服务器-命令行模式 1.远程连接工具.目前Linux远程连接工具有很多种,您可以选择顺手的工具使用.下面使用的是名为Putty的Linux远程连接工具.该工具是免费的,且不需要安装,在网上方便地下载到. 2.启动Putty.exe程序,进入Putty主界面.在Putty "Host Name"输入IP地址,在Saved Session中输入希望保存的名字(可以任意),点击"Save";以后可以方便调用而不需要每次输入IP地址:点击"Op

  • 使用PSSH批量管理Linux服务器

    pssh是一款开源的软件,使用python实现,用于批量ssh操作大批量机器:pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的:比起for循环的做法,我更推荐使用pssh!使用pssh的前提是:必须在本机与其他服务器上配置好密钥认证访问(即ssh信任关系). 下面就说下使用pssh进行批量操作的记录: 1)安装pssh 可以yum直接安装: [root@bastion-IDC ~]# yum install -y pssh 2)pssh用法 [root@ba

  • BT宝塔Linux服务器管理助手架设VPS面板(安装及初始设置应用)

    老左初次看到宝塔服务器管理助手软件的信息应该是上周在小夜博客那边看到广告的,从这款软件介绍应该是在这两年逐步在更新.升级,目前拥有Linux和Windows环境版本,其中我们大部分用户需要的Linux系统版本处于内侧版本,但是功能对于普通的建站需求应该是比较齐全的. 从用户需求角度看,目前国内的Linux服务器管理面板虽然大大小小有很多个,但是要么是开始付费,要么版本过老很久不更新,包括老左在之前有介绍的AppNode面板也是收费版本,但是BT宝塔面板是免费的,虽然目前处于测试版本,我还是准备体

  • 解决访问不到Linux服务器中RabbitMQ管理页面问题

    由于自己项目的某项功能需要服务器中发送消息到rabbitmq中,于是今天在linux服务器中安装了rabbitmq.首先用yum安装erlang环境,然后通过rpm安装rabbitmq服务,然后配置一下环境. systemctl start rabbitmq-server 启动rabbitmq,访问ip:15672,发现服务器拒绝了访问. 起初我怀疑是防火墙的问题,于是我检查了linux的防火墙和阿里云的防火墙,发现15672端口都是开启的.于是我开始排除问题,我在服务器中,wget http:

  • linux服务器基本安全配置手册

    假如你想要搭建一个Linux服务器,并且希望可以长期维护的话,就需要考虑安全性能与速度等众多因素.一份正确的linux基本安全配置手册就显得格外重要.在我本文中就向大家介绍在edhat/centos 4,5下的Linux服务器基本安全配置手册. 安装注意 1.删除系统特殊的的用户帐号: 禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装上系统时就应该做此检查,Linux提供了各种帐号,你可能不需要,如果你不需要这个帐号,就移走它,你有的帐号越多,就越容易受到攻击. #为删除你系统上的

  • 确保Linux服务器安全 防范四种级别攻击

    随着Linux企业应用的不断扩展. 有大量的网络服务器都在使用Linux操作系统.Linux服务器的安全性能受到越来越多的关注. 这里根据Linux服务器受到攻击的深度以级别形式列出,并提出不同的解决方案. 随着Linux企业应用的扩展,有大量的网络服务器使用Linux操作系统.Linux服务器的安全性能受到越来越多的关注,这里根据Linux服务器受到攻击的深度以级别形式列出,并提出不同的解决方案. 对Linux服务器攻击的定义是:攻击是一种旨在妨碍.损害.削弱.破坏Linux服务器安全的未授权

  • 关于Linux服务器磁盘空间占满问题的解决方法

    下面我们一起来看一篇关于Linux服务器磁盘占满问题解决(/dev/sda3 满了),希望碰到此类问题的人能带来帮助. 今天下班某电商技术部leader发现个问题,说他们服务器硬盘满了.把日志文件都删掉了,可硬盘空间依旧满.于是df -h查看了下各个挂载点的状况(如下图). /dev/sda3占用了100%,那么我们du -s -h ./*看下目录的占用情况(如下图). 在工作中,我们也许会遇到这样的问题,发现某个磁盘空间快满了,于是,找到一些无用的大文件将其删除后,发现磁盘空间还是没有释放掉,

  • 使用Putty远程(SSH)管理Linux VPS的图文教程

    用它来远程管理Linux VPS十分好用,其主要优点如下:◆ 完全免费;◆ 在Windows 下运行的都非常好;◆ 全面支持ssh1和ssh2:◆ 绿色软件,无需安装,下载后在桌面建个快捷方式即可使用:◆ 体积很小:◆ 操作简单,所有的操作都在一个控制面板中实现.putty下载地址: http://soft.vpser.net/manage/putty/puttyfile_0.60cn.zip下载完成,解压,即可使用.以下是使用putty 登录Linux VPS进行远程(SSH)管理 的图片教程

  • linux服务器部署tomcat和Nginx的教程

    项目需要,申请了三台测试机器,好在测试机里面光秃秃的什么都没有,我就可以好好的学习一把玩一把了!接下来以图文的形式讲一下我所碰到的坑以及小小的收获吧! 一.准备工作 首先你得有一台可以玩的linux服务器,知道用户名和密码,然后你需要在windows电脑上安装两个可以连上linux服务器的工具,Xshell 5和Xftp 5,安装教程不多说,补图说明如何连上服务器: xshell连接界面如下,输入好主机ip后点击确定,xshell会弹出窗口输入用户名和密码即可连接成功! xftp连接界面如下,填

随机推荐