2017-09-30 9 views
0

私はこの質問が以前何度も聞かれたことは知っていますが、私は自分のコードを動作させることができませんでした。 私はCAN-BUSシールド付きラズベリーパイ3を使用しています。これがプロダクション環境になるので、私はPiセットアップがすばらしく簡単である必要があります。プロダクションスタッフがスクリプトを実行できるようにbashスクリプトを作成し始めました.Piはスクリプトから必要なものをすべて更新してインストールします。 私はこのウェブサイトhttps://harrisonsand.com/can-on-the-raspberry-pi/に従っており、can-utilsをコンパイルする際に問題に遭遇しました。別のディレクトリでbashスクリプトを実行しています

私はsudo git clone https://github.com/linux-can/can-utils.git を使用することによって、ここhttps://github.com/linux-can/can-utils.git から缶utils.gitのクローンを作成することができていますが、私はこれらは、dirでき-utilsのに位置しているよう./autogen.sh & ./configureを実行する必要があるときに私の問題が来ます。

ウェブサイトに記載されているようにPi端末からこれを実行すると、cd can-utilsを変更してもうまく動作し、その後はsudo ./autogen.shとなりますが、bashスクリプトで実行すると機能しません。

以下は私が今までに持っていたスクリプトですが、ほとんどの部分がコメントされているので、私が書いているように各部分をテストできるようになっていて、既に持っているものをダウンロードしてインストールする必要はありません

#!/bin/bash 

## Change Password 
#printf "***********************************************************************\n" 
#printf "Changing Password\n" 
#echo "pi:***********" | sudo chpasswd  # Password hidden 
#sleep 1 
#printf "Password Changed\n" 

## Update & Upgrade Pi 
#printf "***********************************************************************\n" 
#printf "Update & Upgrade Pi\n\n" 
#sudo apt-get update && sudo apt-get upgrade -y 
#sleep 1 

## Upgrade dist 
#printf "***********************************************************************\n" 
#printf "Upgrade Dist\n\n" 
#sudo apt-get dist-upgrade -y 
#sleep 1 

## Install libtools 
#printf "***********************************************************************\n" 
#printf "Installing libtools\n\n" 
#sudo apt-get install git autoconf libtool -y 
#sleep 1 

## Download required files 
#printf "***********************************************************************\n" 
#printf "Downloading required files\n\n" 
## can-utils 
#sudo git clone https://github.com/linux-can/can-utils.git 
#sleep 1 

## Auto configure can-utils 
printf "***********************************************************************\n" 
printf "Auto Configure can-utils\n\n" 
# Things I have tried and do not work 
#(cd /c && exec /can-utils/autogen.sh) 
#sudo source /can-utils/autogen.sh 
#sudo ./can-utils.autogen.sh 
sleep 1 

私はスクリプトが動作を開始パイ端子にsudo ./can-utils.autogen.shをしようとするので、私はこれは私が必要とする右のコマンドの一種だと思いますが、その後、私はautoreconf: 'configure.ac or 'configure.in' is requiredこれらのファイルは、CAN-utilsのディレクトリではなくするためのものでエラーが出ますそれが見つからない何らかの理由があります。私が最後の2日間の答えを探している人を教えてください。

+0

将来的には、あなたの問題を示す*可能な最短の*コードを作成する予定です。理想的には、これは 'git clone'と' autogen'を実行しようとする2つの行で、コメントアウトされた無関係のcruftはありません。 –

+0

そして、あなたは本当にここで 'sudo'を使ってはいけません。これは、ホスティングサービスを介した 'git'への攻撃か、あなたがコンパイルしているベースの悪意のあるコードから暴露された脆弱性を拡大します。 –

答えて

-1

スクリプトを使ったsudoは私にとっては悪夢です。 (いくつかのオペレーティングシステム上で危険なのsetuidシェルスクリプトを作成し、同じカーネルのバグを公開することができますsudoを介したシェル・スクリプトの実行

あなたのOSが持っている場合は/ dev/FD:私はちょうど私のFedora 25のsudoのの人に読んで/ディレクトリ、setuidシェルスクリプトは一般的に安全です)。

sudoコマンドは、root権限を得るためにユーザーが作成したスクリプトを実行しないようにrootアカウントを保護する必要があります。あなたはsudoの使用を続ける場合は

、私のアドバイスは、あなたのスクリプトの先頭にcdコマンドを追加する必要があります。

cd /where_everithing_is 

は、適切な場所にあると確認します。 しかし、sudoはあなたと再び戦うでしょう!

0

あなたの助けをありがとう、間違って私はcd /home/pi/can-utilsを使用して終了しました私はそれを試していたと思っていたが、私はcd ./can-utilsは動作しませんでした。

+0

'cd。/ can-utils'は、あなたが直接の親を実行している場合にはうまく動作します。 –

関連する問題