当 SSH 会话未运行时,无法访问 LAN 设备 IP

当 SSH 会话未运行时,无法访问 LAN 设备 IP

大家好,我有一个 python 脚本,它从 LAN 中的不同 IP 地址读取数据,该脚本每 5 分钟使用 CRON 作业在安装了 Ubuntu 20.04 LTS focus 的边缘设备中运行一次。问题非常奇怪,当我通过 SSH 进入设备时,脚本可以正常工作,但是当我关闭 SSH 会话时,cron 会启动脚本,但 IP 地址没有响应或无法 ping 通。

我尝试了以下方法,但这些方法对我都不起作用。

  1. 将代码转换为服务
  2. 禁用设备睡眠/挂起
  3. 已启用网络服务
  4. 尝试启用自动登录,假设它允许会话打开

期待解决这个问题,CRON 作业执行的 Python 脚本如下

import subprocess

def ping_ip(ip_address):
    try:
        result = subprocess.run(['ping', '-c', '1', ip_address], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, timeout=5)
        if result.returncode == 0:
            return True, result.stdout
        else:
            return False, result.stderr
    except subprocess.TimeoutExpired:
        return False, "Timed out"

def main():
    ip_addresses = ["192.168.1.1", "192.168.1.2", "192.168.1.3", "192.168.1.249"]

    for ip in ip_addresses:
        is_responding, response = ping_ip(ip)
        if is_responding:
            print(f"{ip}\tResponding")
        else:
            print(f"{ip}\t Not Responding")

if __name__ == "__main__":
    main()

每 5 分钟运行一次此脚本的 CRON 作业本身如下

*/5 * * * * /usr/bin/python3 /home/nvidia/our-script/pinger.py > /home/nvidia/our-script/lastrun.txt

我刚刚发现同样的脚本在 Ubuntu 18.04 上设备启动时无需任何用户登录即可完美运行

相关内容