2017-02-22 66 views
0

こんにちは私は、ログイン作業を自動化するためにexpectを使用しています。 が、パスワードは私がハイフンをエスケープし、expectスクリプトで引用符を使用する

私は "きちんと"エスケープトラブルの多くを持っているか、他の文字は、私はすべての文字をエンコードし、エンコードされた文字列を期待して送ることができる方法があることを脱出することができますどのようにハイフン で始まる場合、スクリプトは失敗しますそれは

を送信する前にデコードするためにこれが私のスクリプトです

#!/usr/bin/expect -f 
spawn ssh -o "PubkeyAuthentication no" -l user 10.10.10.10 
expect "password: " 
send "-cpass\'ok\r" 
expect "$ " 
+0

ここで一重引用符またはスペースをエスケープしようとしていますか? – Inian

答えて

1

manページから:

- フラグは、文字列ではなく、フラグとして解釈されるべき次の引数を強制します。 かどうかにかかわらず、実際には のような文字列の前に " - "を付けることができます。これは、誤って がフラグのように見えるものによってトリップされることなく、変数文字列を指定する信頼できるメカニズムを提供します。 (で始まるすべての 文字列「 - 」将来のオプション用に予約されています。)

あなたsend何かのように書くべき意味:

send -- "-cpass\'ok\r" 

注:あなたがいずれかを渡そう問題があるでしょうしハイフンで始まる文字列。これは動作しません:send "-cpass"、文字列にハイフンがある場合は、--フラグを使用する必要があります。

-1

あなたは変数にパスワードを保存しようとすることができます

password=-cpass\'ok\r 
send "$password" 

'"または空白の前に\と書くだけです。

+0

Tcl/Expectは 'var = value'構文をサポートしていません。 – pynexj

関連する問題