案例:檢測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新的開始,加油!!!
