私はこれをかなり微調整していますが、私は奇妙な出力ストリームと結果が出ませんでした。基本的には、特定のパスワードとプロセッサーを持っている私たちの広範なネットワーク上に特定のsshデバイスを見つけることを試みています。スクリプトは次のとおりです:bashスクリプトのexpectコマンドが失敗する
#/bin/bash
for i in 54
do
for j in 1 13 14 15
do
out=$(expect -c "spawn /usr/bin/ssh [email protected]$i.$j cat /proc/cpuinfo | grep MyString
expect {
-re \".*Are.*.*yes.*no.*\" {
send \"yes\n\"
exp_continue
}
\"*?assword:*\" {
send \"mypasswd\"
send \"\n\"
exp_continue
}
}")
if [["$out" != ""]]
then
echo "10.2.$i.$j" >> rpiout.txt
fi
done
done
sshコマンドは単独で動作します。また、expectスクリプトも正常に動作します。また、 "if [[...]]"文の前に "echo $ out"を挿入すると、SSHコマンドから期待される出力が得られます。 ...しかし、私は、コマンドラインとNOログファイルにこの出力を取得し、ファイルを書き込もうとしました:
./check.sh: line 19: [[spawn /usr/bin/ssh some_guy:@10.2.54.1 cat /proc/cpuinfo | grep MyString
some_guy:@10.2.54.1's password:
Permission denied, please try again.
some_guy:@10.2.54.1's password:
Permission denied, please try again.
some_guy:@10.2.54.1's password:
: No such file or directoryy,password).
./check.sh: line 19: [[spawn /usr/bin/ssh some_guy:@10.2.54.13 cat /proc/cpuinfo | grep MyString
some_guy:@10.2.54.13's password:
: No such file or directory
./check.sh: line 19: [[spawn /usr/bin/ssh some_guy:@10.2.54.14 cat /proc/cpuinfo | grep MyString
some_guy:@10.2.54.14's password:
: No such file or directory
: No such file or directoryawn /usr/bin/ssh some_guy:@10.2.54.15 cat /proc/cpuinfo | grep MyString
それはの一つではないので、パスワードの入力を3回を尋ねる最初のものは(正しいですターゲットデバイス)。 2番目の2は存在しないIPデバイスですが、最後の2は肯定的な結果を返します。
"エラー" "./check.sh:行19:[[spawn ..."]の行19は "if [[...]"で始まる行です。
この混乱から私を救うための助けがあれば幸いです!
トップラインが '#!/ bin/bash -vx'のときは何が分かりますか? –