1

私はいくつかの arduino yun を使用しており、それらの複数にスケッチをアップロードするスクリプトを書きたいと考えています。コンパイル済みの arduino プログラム、sketch.hex があるとします。このファイルをLAN経由でアップロードしたいと思います。単一のデバイスの場合、次のように機能します。

スケッチをデバイスにコピーします。(パスワードが必要)

scp sketch.hex root@yun1.local:/tmp/sketch.hex

デバイスとの ssh セッションを開きます。(パスワードが必要)

ssh root@yun1.local

次に、次の 2 つのコマンドを使用してプログラムを Atmega にロードします。

merge-sketch-with-bootloader.lua /tmp/sketch.hex
run-avrdude /tmp/sketch.hex

ここで私の質問は、複数のarduino(yun1、yun2、...、yunN)に対してこれを行う方法であり、実際に各デバイスにssh-ingを入力せずに、下の2つのコマンドを実行します。

質問があまり混乱しないことを願っています。事前に感謝します。

更新:自分で理解できました。誰かがそれを必要とする場合のコードは次のとおりです。

#!/bin/sh

#  globalUpload.sh
#  
#
#  Created by maggu on 21/02/16.
#
clear
FILENAME="valve_adjusting.hex"
SSHPASS="doghunter"
SSHCOMMAND="ssh -p 22 -T -o StrictHostKeyChecking=no -o BatchMode=no"
PREFIX="root@linino"
PREFIXO="linino"
SUFFIX=".local"
YUNS=8
for i in `seq 1 $YUNS`
do
SSHACCOUNT=$PREFIX$i$SUFFIX
ssh-keygen -R $PREFIXO$i$SUFFIX
sshpass -p "doghunter" scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null sketch.hex $SSHACCOUNT:/tmp/sketch.hex
sshpass -p $SSHPASS $SSHCOMMAND $SSHACCOUNT << EOF_run_commands
merge-sketch-with-bootloader.lua /tmp/sketch.hex
run-avrdude /tmp/sketch.hex
EOF_run_commands
done
4

1 に答える 1

0
#!/bin/sh

#  globalUpload.sh
#  
#
#  Created by maggu on 21/02/16.
#
clear
FILENAME="valve_adjusting.hex"
SSHPASS="doghunter"
SSHCOMMAND="ssh -p 22 -T -o StrictHostKeyChecking=no -o BatchMode=no"
PREFIX="root@linino"
PREFIXO="linino"
SUFFIX=".local"
YUNS=8
for i in `seq 1 $YUNS`
do
SSHACCOUNT=$PREFIX$i$SUFFIX
ssh-keygen -R $PREFIXO$i$SUFFIX
sshpass -p "doghunter" scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null sketch.hex $SSHACCOUNT:/tmp/sketch.hex
sshpass -p $SSHPASS $SSHCOMMAND $SSHACCOUNT << EOF_run_commands
merge-sketch-with-bootloader.lua /tmp/sketch.hex
run-avrdude /tmp/sketch.hex
EOF_run_commands
done
于 2021-03-23T11:46:19.377 に答える