首页 > 编程问答 >Pythonanywhere - ping:套接字:不允许操作

Pythonanywhere - ping:套接字:不允许操作

时间:2024-07-27 12:20:10浏览次数:14  
标签:python ping pythonanywhere

请帮忙。我有一个 Telegram 机器人,当我从 Bash 控制台启动他时,它每 60 秒 ping 一次静态 IP - 它工作正常,但每天停止工作一次。 我尝试使用“始终开启任务”,但在日志文件中收到“ping:套接字:不允许操作”。我有 5 美元帐户,我能做什么?

从 Bash 控制台运行时我看到的内容:

--- 176.102.48.100 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms PING 176.102.48.100 (176.102.48.100) 56(84) bytes of data. 
--- 176.102.48.100 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms PING 176.102.48.100 (176.102.48.100) 56(84) bytes of data. --- 176.102.48.100 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms

我在 Always On 任务日志中看到的内容:

2023-01-12 08:55:34 - Task preparing to start 
Jan 12 09:00:58 ping: socket: Operation not permitted 
Jan 12 09:01:58 ping: socket: Operation not permitted 
Jan 12 09:02:58 ping: socket: Operation not permitted 
Jan 12 09:03:58 ping: socket: Operation not permitted 
Jan 12 09:04:58 ping: socket: Operation not permitted

我的 Ping 脚本

    def check_ip_available() -> bool:
    hostname = "IP HERE"
    response = os.system("ping -c 1 " + hostname)
    if response == 0:
        return True

    return False

我可以解决这个问题吗?谢谢

我尝试了两种方法来启动我的机器人,但它只能从 Bash 控制台运行。但控制台每 24 小时重置一次,我需要始终执行任务


在 PythonAnywhere 上使用“始终开启”任务时,在运行 ping 命令时遇到“套接字:不允许操作”错误,这是因为在 PythonAnywhere 的 Web 服务器上出于安全原因,ICMP 协议(ping 使用的协议)被阻止了。

解决方案:

不能直接从 PythonAnywhere 的“始终开启”任务中使用 ping 命令。 为了实现的目标,可以考虑以下替代方案:

1. 使用 TCP 连接检查端口可用性:

可以尝试打开到目标 IP 地址和端口的 TCP 连接,而不是使用 ping 。 如果连接成功,则主机处于活动状态并侦听该端口。

以下是一个使用 socket 模块的示例:

import socket

def check_port_open(hostname, port):
    """
    检查主机上的端口是否打开。
    """
    try:
        with socket.create_connection((hostname, port), 2):
            return True
    except OSError:
        pass
    return False

def check_ip_available():
    hostname = "IP HERE"
    if check_port_open(hostname, 80):  # 检查端口 80(HTTP)
        return True
    return False 

2. 使用外部 Ping 服务:

可以使用外部 ping 服务,例如 https://ping.apility.io/ 。 可以使用 Python 的 requests 库发送 HTTP 请求到该服务,并解析响应以检查 IP 地址的可用性。

以下是一个示例:

import requests

def check_ip_available():
    hostname = "IP HERE"
    url = f"https://ping.apility.io/api/v1/ping/{hostname}"
    try:
        response = requests.get(url)
        response.raise_for_status()
        data = response.json()
        if data["success"] and data["results"][0]["status"] == "reachable":
            return True
    except requests.exceptions.RequestException:
        pass
    return False 

请记住,外部服务可能会有限制或收费。

修改的代码:

将的 check_ip_available() 函数替换为选择的方法。 然后,可以在“始终开启”任务中使用此函数。

其他建议:

  • 记录错误: 在的代码中添加错误处理,以记录 ping 命令失败的原因,这有助于调试问题。
  • 联系 PythonAnywhere 支持: 如果需要有关其平台上网络限制的更多信息,请随时联系 PythonAnywhere 支持团队。

希望这些解决方案能帮到!

标签:python,ping,pythonanywhere
From: 75094117

相关文章

  • python+flask计算机毕业设计社区疫情防控物资调配平台(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景近年来,全球公共卫生事件的频发,尤其是新冠疫情的爆发,对社区治理与应急响应能力提出了前所未有的挑战。社区作为疫情防控的第一线,其物资调配......
  • python+flask计算机毕业设计四川工商学院疫情防控系统的设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在全球新冠疫情持续蔓延的背景下,高校作为人员密集、流动性大的特殊场所,其疫情防控工作显得尤为重要。四川工商学院作为一所集教学、科研、......
  • python+flask计算机毕业设计企业人事管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着企业规模的不断扩大与业务复杂度的提升,传统的人事管理方式已难以满足现代企业对高效、精准、自动化管理的需求。企业人事管理涉及员工......
  • python+flask计算机毕业设计外卖食品安全监管微信小程序(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着移动互联网技术的飞速发展,外卖行业作为“互联网+餐饮”的典范,近年来呈现出井喷式增长态势,极大地便利了人们的日常生活。然而,外卖食品......
  • python+flask计算机毕业设计楼盘销售系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着房地产市场的蓬勃发展,楼盘销售作为房地产行业的重要环节,其管理效率与服务质量直接影响到企业的市场竞争力和客户满意度。传统的楼盘销......
  • python+flask计算机毕业设计基于web的小区疫情防控信息管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着全球公共卫生事件的频发,特别是新冠疫情的持续影响,小区作为城市管理的基础单元,其疫情防控工作显得尤为重要。传统的小区管理方式在面对......
  • Python 3 使用 super() 函数时出现“类型错误:__init__() 获得多个参数值”
    我正在使用继承的Python3编写一个OOP程序,当我尝试像这样初始化子类时遇到标题错误:classParent:def__init__(self,var1,var2):self.var1=var1self.var2=var2#moremethodsthattosomestuffclassChild(Parent):a=1#aan......
  • 为什么我会收到 Python IOError: [Errno 13] 写入文件时权限被拒绝?
    我不明白我做错了什么。我正在运行一些测试并将结果写入文件。写入文件的代码部分如下(在名为Tester的类中):@staticmethoddefprintHeader(resultsFileName):ifnotos.path.isfile(resultsFileName):#Thefiledoesnotexist,thus#......
  • 为什么当我在 cmd 中输入 python - -version 时,除了空行之外什么都没有出现?
    我已经下载了python3.9。但是,在通过命令行检查版本时,我确实得到了一个空行而不是版本。我在cmd上使用了以下命令:python--version有几个原因可能会导致在cmd中输入python--version时只出现空行。以下是一些可能的解决方法:1.Python没有添加到......
  • Python爬虫技术 第16节 XPath
    XPath是一种在XML文档中查找信息的语言,尽管XML和HTML在语法上有区别,但XPath同样适用于HTML文档的解析,尤其是在使用如lxml这样的库时。XPath提供了一种强大的方法来定位和提取XML/HTML文档中的元素和属性。XPath基础XPath表达式由路径表达式组成,它们指定了文档中的位置。下......