web-dev-qa-db-ja.com

bashスクリプト-生成、送信、対話-コマンドが見つからないエラー

私のシェルスクリプト、scpコマンドのパスワードプロンプトを削除しようとしています( https://stackoverflow.com/questions/459182/using-expect-to-pass-a- password-to-ssh/459225#459225 )そしてこれは私がこれまでに持っているものです:-

#!/usr/bin/expect
spawn scp $DESTINATION_PATH/exam.tar $SSH_CREDENTIALS':/'$PROJECT_INSTALLATION_PATH
expect "password:"
send $sshPassword"\n";
interact

スクリプトを実行すると、エラーが発生します

spawn: command not found
send: command not found
interact: command not found

エラーも発生しましたexpect: command not foundまた、expectへのパスが正しくなく、expectがまったくインストールされていないことに気付きました。だから、私はyum install expect、パスを修正し、エラーはなくなりました。しかし、他の3つのエラーはまだ削除できません。

3
Sandeepan Nath

あなたはスクリプトをひどく呼び出しています。

あなたが言うなら:

bash scriptname

そうして #!行は無視され、bashはあたかもbash命令であるかのようにファイルを取得します。しかし、これはbashスクリプトではなく、expectスクリプトです。

#!単独で実行するコマンドとしてスクリプトを指定した場合、行はカーネルによってのみ解釈されます。

スクリプトに実行権限を付与して、./scriptnameを呼び出すか、expectコマンドを使用してスクリプトを開始します。

11
Phil P
  1. 以前に「期待する」ツールがあることを確認し、ない場合はそれを実行してください

    # apt-get install expect

  2. 次の内容のスクリプトファイルを作成します。 (#vi/root/scriptfile)

    spawn scp /path_from/file_name user_name_here@to_Host_name:/path_to

    expect "password:"

    send put_password_here\n;

    interact

  3. 「期待」ツールでスクリプトファイルを実行する

    # expect /root/scriptfile

7
Kevin Chui