大家好,我有一个 python 脚本,它从 LAN 中的不同 IP 地址读取数据,该脚本每 5 分钟使用 CRON 作业在安装了 Ubuntu 20.04 LTS focus 的边缘设备中运行一次。问题非常奇怪,当我通过 SSH 进入设备时,脚本可以正常工作,但是当我关闭 SSH 会话时,cron 会启动脚本,但 IP 地址没有响应或无法 ping 通。
我尝试了以下方法,但这些方法对我都不起作用。
- 将代码转换为服务
- 禁用设备睡眠/挂起
- 已启用网络服务
- 尝试启用自动登录,假设它允许会话打开
期待解决这个问题,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 上设备启动时无需任何用户登录即可完美运行