私のシェルスクリプト、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つのエラーはまだ削除できません。
あなたはスクリプトをひどく呼び出しています。
あなたが言うなら:
bash scriptname
そうして #!行は無視され、bashはあたかもbash命令であるかのようにファイルを取得します。しかし、これはbashスクリプトではなく、expectスクリプトです。
#!単独で実行するコマンドとしてスクリプトを指定した場合、行はカーネルによってのみ解釈されます。
スクリプトに実行権限を付与して、./scriptname
を呼び出すか、expect
コマンドを使用してスクリプトを開始します。
以前に「期待する」ツールがあることを確認し、ない場合はそれを実行してください
# apt-get install expect
次の内容のスクリプトファイルを作成します。 (#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
「期待」ツールでスクリプトファイルを実行する
# expect /root/scriptfile