返回列表 发帖

CentOS6使用Socket(检测TCP端口)

操作系统的版本信息:
[root@centos6 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@centos6 ~]#
[root@centos6 ~]# uname -r
2.6.32-696.el6.x86_64

Python的版本信息:
[root@centos6 ~]# python3 --version
Python 3.6.8





######

检测本机的某个TCP端口是否能被访问:
[root@centos6 ~]# cat check.py
#coding=utf-8

import socket  #这个模块是内置的,不用额外安装

host_1 = socket.gethostname()  #获取本机的主机名

ip_1 = '127.0.0.1'  #本机的回环IP地址

port_1 = 80  #检测 TCP 80 端口

try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((ip_1, port_1))
       
except:
        print(f"本机({host_1})的TCP端口{port_1}是不通的。") #如果端口对应的服务没启动,就会不通
       
else:
        print(f"本机({host_1})的TCP端口{port_1}是通的。")

       
设置脚本权限:
[root@centos6 ~]# chmod a+x check.py


脚本运行的结果:(端口不能被访问时)
[root@centos6 ~]# service httpd stop
stop apache...  done
[root@centos6 ~]#
[root@centos6 ~]# python3 check.py
本机(centos6.zhuohua.store)的TCP端口80是不通的。
[root@centos6 ~]#

脚本运行的结果:(端口能被访问时)
[root@centos6 ~]# service httpd start
start apache...  done
[root@centos6 ~]#
[root@centos6 ~]# python3 check.py
本机(centos6.zhuohua.store)的TCP端口80是通的。
[root@centos6 ~]#





######

检测本机的多个TCP端口是否能被访问:
[root@centos6 ~]# cat check.py
#coding=utf-8

import socket

host_1 = socket.gethostname()
ip_1 = '127.0.0.1'

def func1(ip_1,port_1):

        try:
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                s.connect((ip_1, port_1))

        except:
                print(f"本机'{host_1}'的TCP端口{port_1}是不通的。")
               
        else:
                print(f"本机'{host_1}'的TCP端口{port_1}是通的。")

if __name__ == '__main__':

        ### 多次执行函数,就可以一次性检测本机的多个TCP端口了
        func1(ip_1,80)
        func1(ip_1,3306)


脚本运行的结果:
[root@centos6 ~]# python3 check.py
本机'centos6.zhuohua.store'的TCP端口80是通的。
本机'centos6.zhuohua.store'的TCP端口3306是不通的。
[root@centos6 ~]#





######

检测多台远程主机的多个TCP端口是否能被访问:
[root@centos6 ~]# cat check.py
#coding=utf-8

import socket

import datetime

dt = datetime.datetime.now()
tt = dt.strftime('%Y%m%d_%H%M')

def func1(ip_1,port_1):

        try:
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                s.connect((ip_1, port_1))

        except:
                print(f"检测时间:{tt} 远程主机[{ip_1}]的TCP端口{port_1}是不通的。")
               
        else:
                print(f"检测时间:{tt} 远程主机[{ip_1}]的TCP端口{port_1}是通的。")

if __name__ == '__main__':

        ### 多次执行函数,就可以一次性检测多台远程主机的多个TCP端口了
       
        ip_1 = "www.baidu.com"
        port_1 = 80
        func1(ip_1,port_1)
       
        ip_1 = "blog.zhuohua.store"
        port_1 = 80
        func1(ip_1,port_1)
       
        ip_1 = "47.75.39.177"
        port_1 = 21
        func1(ip_1,port_1)
       
       
脚本运行的结果:
[root@centos6 ~]# python3 check.py
检测时间:20190208_1246 远程主机[www.baidu.com]的TCP端口80是通的。
检测时间:20190208_1246 远程主机[blog.zhuohua.store]的TCP端口80是通的。
检测时间:20190208_1246 远程主机[47.75.39.177]的TCP端口21是不通的。
[root@centos6 ~]#





相关文章:
CentOS6使用tcping+crontab计划任务
Python3获取主机名和IP地址
Python3使用Socket发送信息

CentOS8使用Socket(检测TCP端口)

自定义函数
try语句

返回列表