检查网络文件是否存在

检查网络文件是否存在

我用谷歌搜索了很多,但无法解决这个问题。

对于本地文件我可以让它工作,但对于网络文件则不行。

我想检查一个文件是否在网络上存在,但如何存在?

我在我的终端中尝试过:

 [ -f "192.168.1.46:8090/camera.jpg" ] && echo 1 || echo 0

它不断输出 0,而我确定该文件存在,有人可以帮助我吗?

编辑:

更清楚地说:

在我的 Raspberry Pi(带有 Raspbian)上,我运行 FFserver 和 FFmpeg。它将流转码为camera.mjpeg 和camera.jpg。我的Raspberry Pi本身的本地IP地址是19.168.1.46,所以我想检查文件是否仍然存在,因为有时转码过程会挂起,并且mjpeg无法读取。我现在有这个外壳代码:

  #!/bin/bash       
  url=http://192.168.1.46:80/test.txt
  url2=http://192.168.1.46:8090/camera.mjpeg

  if curl --output /dev/null --silent --head --fail "$url"; then
    echo "URL exists: $url"
  else
    echo "URL does not exist: $url"
  fi

  if curl --output /dev/null --silent --head --fail "$url2"; then
    echo "URL exists: $url2"
  else
    echo "URL does not exist: $url2"
  fi

这是输出:

  URL exists: http://192.168.1.46:80/test.txt
  URL does not exist: http://192.168.1.46:8090/camera.mjpeg

问题是:我确信camera.mjpeg在那里,因为我可以通过另一台PC上的浏览器访问它并毫无问题地查看它,但它仍然说它不存在。

答案1

192.168.1.46:8090/camera.jpg只是一个不存在的文件的名称(camera.jpg当地的目录名为./192.168.1.46:8090.目录./192.168.1.46:8090不存在)。

您将需要使用可以访问服务器的程序,例如curl或wget。

如果服务器是HTTP,则使用curl选项--head告诉服务器不发送文件,而只发送HTTP标头。这应该足够了。例如curl --head http://192.168.1.46:8090/camera.jpg

相关内容