質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

1回答

2232閲覧

【RaspberryPi】シェルスクリプトが期待通りに動作しない

takk_014

総合スコア53

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2021/11/18 05:24

編集2021/11/18 05:34

こちらのサイトを参考にmjpeg-streamerが自動起動するようにシェルスクリプトを作成しています。
サイトに記載されているスクリプトの内容をコピペして作ったmjpgstreamer.shを起動時に実行するようにrc.localを編集しました。

mjpgstreamer.sh

#!/bin/sh # This is Web-streaming server start up script.for raspi # No warrantly. # Config PORT="8080" SIZE="320x240" # 640x480でも良いです F_RATE="15" # 15 fps なので 1秒15コマです。 MJPG_STREAMER=/usr/local/bin/mjpg_streamer export LD_LIBRARY_PATH=/usr/local/lib $MJPG_STREAMER \ -i "input_uvc.so -f $F_RATE -r $SIZE -d /dev/video0 -y" \ -o "output_http.so -w /usr/local/www -p $PORT" -b

rc.local

. . . fi iptables-restore < /etc//iptables.tiv4.nat sh /home/pi/tool/mjpgstreamer.sh exit 0

あとはラズパイを起動させてラズパイのwi-fiに接続すれば指定のローカルなIPアドレスにアクセスできるはずです。
しかしアクセスできず、ブラウザ上で下記が表示されます。

404: Not Found! Could not open file

rc.localに「sh /home/pi/tool/mjpgstreamer.sh」を記述しない場合はこのような表記すらされず、ページが開けませんでしたとブラウザに言われます。
そのため起動時にmjpgstreamer.shは実行されているようです。

サイトで紹介されているシェルスクリプトは少し複雑に書かれているため単純にコマンドそのものを書けば良いのではと思って下記のようなシェルスクリプトを作成しましたが結果は同じでした。
mjpgstreamer.sh

#!/bin/sh cd mjpg-streamer-experimental mjpg_streamer -i "/usr/local/lib/mjpg-streamer/input_uvc.so -d /dev/video0 -y -r 320x240 -f 15" -o "/usr/local/lib/mjpg-streamer/output_http.so -p 8080 -w ./www"

シェルスクリプトを使わず手動でコマンド(上記)を打った場合は正常にmjpg-streamerが稼働してローカルのIPアドレスにアクセスできます。
そのため原因はシェルスクリプトにあると思われます。

どのようなシェルスクリプトを作成すれば指定のローカルのIPアドレスにアクセスできるようになるのでしょうか?
ご教授お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
こちらのサイトを参考に下記のようにシェルスクリプト書き換えたところうまく動きました〜。

mjpgstreamer.sh

#!/bin/sh # Config PORT="8080" #ポート番号 SIZE="640x360" #画面サイズ FRAMERATE=“15” #フレームレート MJPG_STREAMER=/usr/local/bin/mjpg_streamer export LD_LIBRARY_PATH=/usr/local/lib $MJPG_STREAMER \ -i "input_uvc.so -f $FRAMERATE -r $SIZE -d /dev/video0 -y -n" \ -o "output_http.so -w /usr/local/share/mjpg-streamer/www -p $PORT"

ちなみに
http:// localhost:8080 /?action = snapshot.html
でブラウザに画像だけ表示できる
http:// localhost:8080 /?stream_simple.html
でブラウザに動画だけ表示できる

投稿2021/11/18 06:14

編集2021/11/18 07:03
takk_014

総合スコア53

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問