2017-07-17 15 views
0

誰も私にこれがなぜ機能しないのか教えてください。expect inside bashスクリプトの使用方法

#!/bin/bash 
cd /home 
touch somefile 
/usr/bin/expect<<FILETRANSFER 
spawn scp -r -P remoteServerPort somefile remoteServerIP:/home 
expect "assword:" 
send "MyPassWord\r" 
interact 
FILETRANSFER 
echo "It's done" 

ファイルはリモートサーバーに転送されず、エラーは発生しません。多くの方法で解決できませんでした。

+0

より良い方法は、「ssh」(または「scp」)でパスワードを入力または送信しないことです。いくつかのsshチュートリアルを読んで、公開鍵を使用してください。 –

+0

'/ usr/bin/expect << FILETRANSFER'、ここでは' << 'の前に空白がありません – Jahid

+0

あなたの返信に感謝します。 @ Basile Starynkevitch何らかの理由で公開鍵を使用できません。 @ Jahidはスペースを追加しましたが、まだ動作しません。 – derp

答えて

1

定義したbashスクリプトは、標準入力のexpectコマンドをexpectに渡しています。ただし、expectコマンドでは、ファイルに引数を指定するか、または-cオプションを使用して引数として引数を指定する必要があります。

いくつかのオプションがありますが、スクリプトに変更を少なくするには、expectコマンドのhere-document(temporary)を作成するためにプロセス置換を使用するだけです。

+0

Btw、私はちょうどチェックして、ここで利用可能なすべてのオプションでは、答えがあります:https://stackoverflow.com/questions/41165719/embedding-an-expect-inside-a-bash-script –

+0

いいえ、期待しています質問に掲示されているようにstdinからコマンドを完全に細かく読んでください。 –

関連する問題