나는 많이 봤지만 이 문제를 해결할 수 없었다.
로컬 파일에서는 작동하게 할 수 있지만 네트워크 파일에서는 작동하지 않습니다.
파일이 있는지 확인하고 싶어요인터넷에서존재하지만 어떻게?
내 터미널에서 이것을 시도했습니다.
[ -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
문제는: 다른 PC의 브라우저를 통해 액세스하여 문제 없이 볼 수 있기 때문에 Camera.mjpeg가 있다고 확신하지만 여전히 존재하지 않는다고 표시됩니다.
답변1
192.168.1.46:8090/camera.jpg
단순히 존재하지 않는 파일의 이름입니다 camera.jpg
(현지의./192.168.1.46:8090
.directory 라는 디렉터리가 ./192.168.1.46:8090
존재하지 않습니다.)
컬(curl)이나 wget(wget)과 같이 서버에 액세스할 수 있는 프로그램을 사용해야 합니다.
서버가 HTTP인 경우 curl
옵션을 사용하여 --head
서버에 파일을 보내지 않고 HTTP 헤더만 보내도록 지시합니다. 이 정도면 충분합니다. 예를 들어curl --head http://192.168.1.46:8090/camera.jpg