Shell編程-檢測某個服務是否運行實例


 

 

案例:檢測linux服務器上sshd服務是否正常運行,如果不在運行,那么請開啟sshd服務。

看到以上這句話我們需要了解,sshd服務是什么,以及如何查看sshd服務是否在運行,包括如何啟動sshd服務。

一、什么是sshd服務

其實網上有一大堆的介紹sshd的簡單的一句話概括就是SSHD服務 
SSH 協議:安全外殼協議。為 Secure Shell 的縮寫。SSH 為建立在應用層和傳輸層基礎上的安全協議。

看到這篇文章的大神肯定知道telnet服務。sshd服務使用SSH協議可以用來進行遠程控制, 或在計算機之間傳送文件相比較之前用telnet方式來傳輸文件要安全很多,因為telnet使用明文傳輸,是加密傳輸。

比如:我們使用的xshell,以及CRT等遠程的工具去遠程連接我們的linux服務器,大多數都是使用sshd的22端口來進行通信如下:

二、如何查看sshd服務正在運行

我們可以使用以下命令來查看sshd服務是否在運行如下:

 

[root@yankerp ~]# systemctl status sshd

 

顯示running狀態那么就是正在運行狀態。當然以上系統使用的是centos7.x的所以使用的systemctl。如果是6.x的系統可以使用service 來查看sshd是否正在運行,至於如何開啟sshd服務這里就不說了。

 

編寫案例腳本,案例要求是檢測linux服務器上sshd服務是否正常運行,如果不在運行,那么請開啟sshd服務。

1)我們首先需要查看sshd服務是否在運行

 

2)這時候我們需要截取running那一行,我們可以使用grep命令如下:

 

3)行截取完成后,我們要截取列了,我們又可以使用awk命令來截取某一列,我們截取第三列running字段如下:

 

4)我們發現running的左右兩側有()但是我們需要截取running字段,這時候我們不需要awk了,我們使用cut命令來截取,以(、)為分隔符截取如下:

這時候我們已經截取到了running字符,接下來開始寫shell腳本 如下:

 

#!/bin/bash  
# ywyankerp@163.com  
# DATA:Mon Jan 15 17:17:10 CST 2018  
# This is a sshd detection script  
  
SSHD=`systemctl status sshd | grep Active | awk '{print $3}' | cut -d "(" -f2 | cut -d ")" -f1`  
  
if [ "$SSHD" == "running" ]  
        then  
            echo "sshd服務正在運行!"  
        else  
            systemctl start sshd  
fi  

 

第一行:這里使用了``符號,它的意思是執行這條命令!

 

if如果 ["第一行的命令執行結果" 等於 "running"]

那么then

執行一條 echo “sshd服務正在運行!”

else否則

執行一條  systemctl start sshd

fi

寫完之后我們看到sshd服務正在運行,那么執行此腳本的結果肯定是打印出sshd正在運行如下:

這時候我們關閉sshd服務再次執行此腳本

2018新的開始,加油!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM