期待-コマンドが失敗した場合にステータスコード1で終了する方法は?

デューク・ダガル

私の目標は、expectを使用してsftpサーバー上のファイルの名前を変更することです。名前の変更が失敗した場合は、expectを終了してステータスコード1を返します。

私のexpectスクリプトは正常に機能します-名前の変更に成功しました。

名前の変更が失敗した場合にステータスコードで終了する方法を理解できません。

ubuntu@ip-10-0-0-138:~$> cat expect_script.txt
spawn sftp -o "StrictHostKeyChecking no" [email protected]
expect "password:"
send "somesupersecretpassword\n"
expect "sftp>"
send "rename /var/www/static/tmp-93121715.mp4  /var/www/static/91329728.mp4\n"
expect "sftp>"
send "rename /var/www/static/91329728.mp4  /var/www/static/tmp-93121715.mp4\n"
expect "sftp>"
send "bye\n"
expect "#"
exit

スクリプトを実行したときの出力は次のとおりです。

ubuntu@ip-10-0-0-138:~$> expect -f expect_script.txt
spawn sftp -o StrictHostKeyChecking no [email protected]
[email protected]'s password:
Connected to nginx.localvpc.
sftp> rename /var/www/static/tmp-93121715.mp4  /var/www/static/91329728.mp4
rename /var/www/static/tmp-93121715.mp4  /var/www/static/91329728.mp4
sftp> rename /var/www/static/91329728.mp4  /var/www/static/tmp-93121715.mp4
rename /var/www/static/91329728.mp4  /var/www/static/tmp-93121715.mp4
sftp> bye
bye
ubuntu@ip-10-0-0-138:~$>

名前の変更が失敗した場合にリターンコードゼロで終了するために私ができることを誰かが提案できますか?

ボーナスの質問... expectスクリプトの最後で終了する正しい方法は何ですか?これらの1つですか?

exit
close
expect eof

ありがとう!

放棄された

そのテキストを照合して操作することにより、名前変更の失敗をチェックする必要があります。これは、proc(TCLがサブルーチンまたは関数と呼ぶもの)に抽象化できます

spawn ...
set ret 0
expect "sftp>"
proc sftp_rename {from to} {
    global ret
    send "rename $from $to\n"
    expect {
        -ex "Couldn't" { set ret 42; exp_continue }
        "sftp>"
    }
}
sftp_rename /var/www/static/tmp-93121715.mp4 /var/www/static/91329728.mp4
sftp_rename /var/www/static/91329728.mp4 /var/www/static/tmp-93121715.mp4
send "bye\n"
expect eof
exit $ret

その時点で接続expect eofがなくなると予想されるので、使用sftpます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

期待スクリプトのコマンドから終了ステータスを取得する方法

分類Dev

戻りコードが期待されていたのに-1であったため、タスクが失敗しました0-Bamboo

分類Dev

Postmanでテストが失敗したときにコンソールで期待される実際の結果を取得する方法

分類Dev

プリ/コードコンテンツが長すぎる場合、列は右に展開されますが、コンテンツをスクロール可能にすることを期待していました

分類Dev

RubyとRSpec-期待される出力がメソッドと同じ場合、テストは失敗します

分類Dev

突然私のScalaコードは各ステートメントの終わりに `;`を期待します

分類Dev

Sedエラー「コマンドaは\の後にテキストが続くことを期待します」

分類Dev

期待:生成されたプロセスから終了コードを取得する方法

分類Dev

bashスクリプトのコマンドが失敗することを期待する

分類Dev

期待スクリプトでexecコマンドに変数を渡す方法は?

分類Dev

Ubuntuでコマンドを期待する

分類Dev

errexit(-e)を使用して実行している場合、ゼロ以外の戻りコードを期待し、それ以外の場合は失敗するにはどうすればよいですか?

分類Dev

期待された実際のマッチングですが、テストは失敗しています

分類Dev

G ++コマンドは、「期待される '('関数スタイルのキャストまたは型の構築」をスローします

分類Dev

シェルスクリプトでsedされたFreeBSD:コマンドaは\の後にテキストが続くことを期待します

分類Dev

シェルスクリプトでsedされたFreeBSD:コマンドaは\の後にテキストが続くことを期待します

分類Dev

Pythonでコーディングすると、printコマンドが期待どおりに機能しません

分類Dev

Pythonでコーディングすると、printコマンドが期待どおりに機能しません

分類Dev

JSONオブジェクトのデコードに失敗しました:期待値:行1列1(文字0)</ p>

分類Dev

Typescript-エラーTS1128からコードをビルドできません:宣言またはステートメントが必要ですが、コードを提供すると期待どおりに実行されます

分類Dev

react jsコンテキストAPIを使用してデータを適切に保存および取得する方法は?私が持っているコードは期待どおりに機能していません

分類Dev

Bash-2つのコマンドを実行し、最初に失敗した場合は終了ステータス1を取得します

分類Dev

期待:コマンドの戻りコードを取得します

分類Dev

Jestは、アサーションが失敗することを期待していても、テストに合格したと報告しています

分類Dev

分度器は、期待が失敗した場合でも成功を返します

分類Dev

単体テストは期待どおりに機能しません-404ではなく、ステータスコードとして200を返します

分類Dev

コピーが保存されて別のスレッドに渡された場合、va_list var-argコピーが期待どおりに機能しないのはなぜですか?

分類Dev

laravel の雄弁なコマンドを使用すると、データベース クエリが期待どおりに機能しない

分類Dev

コマンドが失敗した場合に終了する方法は?

Related 関連記事

  1. 1

    期待スクリプトのコマンドから終了ステータスを取得する方法

  2. 2

    戻りコードが期待されていたのに-1であったため、タスクが失敗しました0-Bamboo

  3. 3

    Postmanでテストが失敗したときにコンソールで期待される実際の結果を取得する方法

  4. 4

    プリ/コードコンテンツが長すぎる場合、列は右に展開されますが、コンテンツをスクロール可能にすることを期待していました

  5. 5

    RubyとRSpec-期待される出力がメソッドと同じ場合、テストは失敗します

  6. 6

    突然私のScalaコードは各ステートメントの終わりに `;`を期待します

  7. 7

    Sedエラー「コマンドaは\の後にテキストが続くことを期待します」

  8. 8

    期待:生成されたプロセスから終了コードを取得する方法

  9. 9

    bashスクリプトのコマンドが失敗することを期待する

  10. 10

    期待スクリプトでexecコマンドに変数を渡す方法は?

  11. 11

    Ubuntuでコマンドを期待する

  12. 12

    errexit(-e)を使用して実行している場合、ゼロ以外の戻りコードを期待し、それ以外の場合は失敗するにはどうすればよいですか?

  13. 13

    期待された実際のマッチングですが、テストは失敗しています

  14. 14

    G ++コマンドは、「期待される '('関数スタイルのキャストまたは型の構築」をスローします

  15. 15

    シェルスクリプトでsedされたFreeBSD:コマンドaは\の後にテキストが続くことを期待します

  16. 16

    シェルスクリプトでsedされたFreeBSD:コマンドaは\の後にテキストが続くことを期待します

  17. 17

    Pythonでコーディングすると、printコマンドが期待どおりに機能しません

  18. 18

    Pythonでコーディングすると、printコマンドが期待どおりに機能しません

  19. 19

    JSONオブジェクトのデコードに失敗しました:期待値:行1列1(文字0)</ p>

  20. 20

    Typescript-エラーTS1128からコードをビルドできません:宣言またはステートメントが必要ですが、コードを提供すると期待どおりに実行されます

  21. 21

    react jsコンテキストAPIを使用してデータを適切に保存および取得する方法は?私が持っているコードは期待どおりに機能していません

  22. 22

    Bash-2つのコマンドを実行し、最初に失敗した場合は終了ステータス1を取得します

  23. 23

    期待:コマンドの戻りコードを取得します

  24. 24

    Jestは、アサーションが失敗することを期待していても、テストに合格したと報告しています

  25. 25

    分度器は、期待が失敗した場合でも成功を返します

  26. 26

    単体テストは期待どおりに機能しません-404ではなく、ステータスコードとして200を返します

  27. 27

    コピーが保存されて別のスレッドに渡された場合、va_list var-argコピーが期待どおりに機能しないのはなぜですか?

  28. 28

    laravel の雄弁なコマンドを使用すると、データベース クエリが期待どおりに機能しない

  29. 29

    コマンドが失敗した場合に終了する方法は?

ホットタグ

アーカイブ