工作中会遇到判断服务器是否存活的场景,比如:批量重启服务器后,各宿主机或虚拟机是否启动成功。
检测服务器是否存活的原理很简单:先检查服务器是否通(ping);如果不通则检查服务器上的服务是否通,如果服务也不通,则说明这台服务器没有开启。可以使用的工具有:ping、telnet、nmap或者tcping等。
nmap功能强大,用处广泛;tcping可以在服务器禁ping的情况下检查机器是否存活(比如windows机器默认就是禁ping的)。在这里,我用的是ping和telnet组合。
关于ping工具,合理的使用相关参数比较有利于排查问题,比如:"-c"参数可以用来限制发送ping多少个包,"-i"参数可以用来限制ping的频率等。举例:
1 |
|
上一段代码意思为:以0.02秒的间隔时间ping www.baidu.com 2次,并将结果(正确或错误)引入到“黑洞”(丢弃),合理的使用参数可以帮助我们快速判断目标主机是否可达。当然,会有人问:你将测试结果引入到黑洞,我怎么知道目标主机是通还是不通呢?这个时候可以通过判断操作状态得知,命令为:
1 |
|
如果上面的结果返回值为0,说明www.baidu.com可达,否则www.baidu.com可能不通,需要进行下一步再判断。有人说,通过手动执行命令麻烦,可否再精巧些?那就写成脚本吧,如下:
1 2 3 4 5 6 7 8 9 |
|
解释上面那段脚本,如果主机不通,则执行后续动作,这些后续动作放在"else"代码块中,后续动作可以使用nmap、telnet等工具,这里介绍telnet。
有人会说,telnet容易,如果telnet程序一直卡在那里则说明服务器端口不通,然后通过“CTRL+c”终止就行了,但是怎样在脚本中使用telnet呢?简单,通过Linux的管道功能(“|”),可以让脚本沉睡一段时间,这段时间内telnet执行任务,待沉睡时间到期则终止telnet程序。话虽如此,怎样实现呢?如下:
1 |
|
判断某台服务器是否存活,可以先ping IP,再telnet port,如果是测试一个IP,则可将脚本写成如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
上面的脚本是针对一个IP进行判断,说实话如果是判断一台服务器是否可达的话直接终端敲命令就知道了,不需要“大费周折”写脚本了,但是如果同时测试多台机器就需要用到脚本了。对于编写批量判断多台主机是否可达的脚本,只需要将上述思路稍作整理,灵活使用linux基础命令即可实现。当然,如果目标机器非常多的情况下,推荐使用ansible或者saltstack,或者干脆写个python多进程的脚本去判断。
下面贴出我之前基于ping和telnet工具写的脚本,大致原理和上面讲述的相似,在执行脚本前,请先编辑服务器配置文件。
执行脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
|
服务器配置文件格式:
1 2 3 4 5 6 7 8 |
|
请将脚本、服务器配置文件放在同一个目录下。
脚本执行方式:chmod + x check.sh && ./check.sh [super|vm|help] 或者 sh check.sh [super|vm|help] 。
脚本参数“super”意为宿主机检测;参数“vm”意为虚拟机检测。
http://www.cgpwyj.cn/
http://news.cgpwyj.cn/
http://item.cgpwyj.cn/
http://www.peacemind.com.cn/
http://news.peacemind.com.cn/
http://item.peacemind.com.cn/
http://www.tasknet.com.cn/
http://news.tasknet.com.cn/
http://item.tasknet.com.cn/
http://www.ownbar.cn/
http://news.ownbar.cn/
http://item.ownbar.cn
http://www.shtarchao.net.cn/
http://news.shtarchao.net.cn/
http://item.shtarchao.net.cn/
http://www.metroworld.com.cn/
http://news.metroworld.com.cn/
http://item.metroworld.com.cn/
http://www.cngodo.cn/
http://news.cngodo.cn/
http://item.cngodo.cn/
http://www.gzrdbp.cn/
http://news.gzrdbp.cn/
http://item.gzrdbp.cn/
http://www.dnapt.cn/
http://news.dnapt.cn/
http://item.dnapt.cn/
http://www.ncxlk.cn/
http://news.ncxlk.cn/
http://item.ncxlk.cn/
http://www.zgxxyp.cn/
http://news.zgxxyp.cn/
http://item.zgxxyp.cn/
http://www.sjjdvr.cn/
http://news.sjjdvr.cn/
http://item.sjjdvr.cn/
http://www.sujinkeji.cn/
http://news.sujinkeji.cn/
http://item.sujinkeji.cn/
http://www.zsjxbd.cn/
http://news.zsjxbd.cn/
http://item.zsjxbd.cn/
http://www.yesgas.cn/
http://news.yesgas.cn/
http://item.yesgas.cn/
http://www.quickpass.sh.cn/
http://news.quickpass.sh.cn/
http://item.quickpass.sh.cn/
http://www.jspcrm.cn/
http://news.jspcrm.cn/
http://item.jspcrm.cn/
http://www.yjdwpt.cn/
http://news.yjdwpt.cn/
http://item.yjdwpt.cn/
http://www.henanwulian.cn/
http://news.henanwulian.cn/
http://item.henanwulian.cn/
http://www.hhrshh.cn/
http://news.hhrshh.cn/
http://item.hhrshh.cn/
http://www.gpgold.cn/
http://news.gpgold.cn/
http://item.gpgold.cn/
http://www.jingzhuiyou.cn/
http://news.jingzhuiyou.cn/
http://item.jingzhuiyou.cn/