私はたくさん見ましたが、この問題を解決できませんでした。
ローカルファイルでは動作させることができますが、ネットワークファイルでは動作しません。
ファイルがあるかどうかを確認したいインターネットから存在するが、どのように?
私の端末でこれを試しました。
[ -f "192.168.1.46:8090/camera.jpg" ] && echo 1 || echo 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