Python侦测VPN网路是否可连线 - Python练习题二

公司为跨国企业, 与工厂间的数据利用VPN进行资料交换, 利用Python配合Windows的排程记录各站点间网路的状况

import re
import socket
import datetime


def internet_on(server_addr):
    """测试网路是否可连线
    参数: server_addr
    """
    try:
        ip_reg = re.compile('^((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$')
        is_ip = ip_reg.match(server_addr)
        #print("checking internet connection..")
        socket.setdefaulttimeout(5)
        if is_ip is None:
            host = socket.gethostbyname(server_addr)
        else:
            host = server_addr

        s = socket.create_connection((host, 80), 2) #time out 会 raise socket.timeout("timed out")
        s.close()
        #print('internet on.')
        return True
    except: #Exception as e:
        #print(e)
        #print("internet off.")
        return False
        

def write_log(file_name, msg):
    with open(file_name, 'a', encoding='utf-8') as file_obj:
        file_obj.write(msg)


 
# vpn server 地址
db_ip = {"RichPine":"192.168.0.1", "RichWay":"192.168.1.1", "EverBest":"192.168.2.1", "Google":"www.google.com"}

for fty_name in db_ip:
    dt_now = datetime.datetime.now()

    file_name = dt_now.strftime('%Y%m%d') + '_' + fty_name + '.log'
    msg =  dt_now.strftime('%Y-%m-%d %H:%M:%S')

    result = internet_on(db_ip[fty_name])
    if result == False:
        msg = msg + ' : off ----------\n' 
    else:
        msg = msg + ' : on\n'

    #print(fty_name, db_ip[fty_name], result, file_name, msg)
    write_log(file_name, msg)

执行结果
https://ithelp.ithome.com.tw/upload/images/20210412/20098325r2Nb2dANBq.jpg


<<:  Tableau Server 使用-管理跟大规模自助式分析并无矛盾(课程推荐)

>>:  Day11:while循环

Day26 如何使用bootstrap

首先,到Bootstrap官网的Documentation(Docs)里,点选download,找到...

Day11 : Docker基本操作 Docker Net篇

前几天我们讲了如何建立Container,每个Container会包含一项服务,如前端、後端、资料库...

[ Day 2 ] - 变数与型别(二)

变数与型别(二) 变数 简单回顾一下,变数的宣告方式 let catNum = 3; 用比较口语的方...

用React刻自己的投资Dashboard Day13 - 制作分页(Pagination)功能

tags: 2021铁人赛 React 一般的内容网站通常都会有将内容分页或是动态读取的功能,例如像...

Day23 - 有了 CI/CD Pipeline ,还需要合适的 Git Workflow

前言 从 Day16 - Day22 我们花了不少时间建立了 CI/CD 流水线,有了这些工具後,交...