【shell腳本】不停地telnet一個ip或域名,並輸出結果到文件中===telnetscript.sh


編寫shell腳本不停地telnet一個域名,並輸出結果到文件中

[root@localhost ~]# cat telnetscript.sh #!/bin/bash #檢查是否在root用戶下執行此腳本(0代表root用戶的權限) if [ $(id -u) != "0" ];then echo "請在root用戶下運行腳本" exit 1 fi #定義輸出目錄 DIR="/var/log/" TIME="$(date +%Y-%m-%d,%X)" IP=ip地址或域名 PORT=端口號 #下面需要先安裝nmap工具 checkPort(){ #檢查端口開通情況,輸出端口的開通信息(443/tcp open https) portState=$(nmap -P0 -sS -p${PORT} ${IP} | awk '/STATE/{getline line;print line}' | awk '{print $2}') if [ X"${portState}" == X"open" ];then echo "${IP} ${PORT} is open" >> ${DIR}telnetstatus.log echo "${TIME}" >> ${DIR}telnetstatus.log else echo "${IP} ${PORT} is failure" >> ${DIR}telnetstatus.log echo "${TIME}" >> ${DIR}telnetstatus.log fi } while true; do checkPort sleep 3 done

運行腳本

在后台運行

[root@localhost ~]# ./telnetscript.sh & [1] 30257

查看輸出結果並統計

[root@localhost ~]# less /var/log/telnetstatus.log [root@localhost ~]# wc -l /var/log/telnetstatus.log

將工作調到前台運行

[root@localhost ~]# fg ./telnetscript.sh [root@localhost ~]# jobs

注意:

比較兩個字符串是否相等的辦法是:
if [ X"$test" = X"test" ]; then
這里的關鍵有幾點:
1、使用單個等號
2 、注意到等號兩邊各有一個空格:這是unix shell的要求
3、 注意到X"$test"前面的X,這是特意安排的,因為當$test為空的時候,上面的表達式就變成了X = Xtest,顯然是不相等的。而如果沒有這個X,表達式就會報錯:[: =: unary operator expected

date命令:

%X表示時分秒。相當於 %H:%M:%S


免責聲明!

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



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