我用谷歌搜索了很多,但无法解决这个问题。
对于本地文件我可以让它工作,但对于网络文件则不行。
我想检查一个文件是否在网络上存在,但如何存在?
我在我的终端中尝试过:
[ -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