expectの使い方について、 macからラズパイにsshする際expectを使っています。 以下のシェルスクリプトを書きました。
expectの使い方について、 macからラズパイにsshする際expectを使っています。 以下のシェルスクリプトを書きました。 #!/usr/bin/expect set timeout 10 spawn ssh ラズパイのipアドレス -l ユーザー名 expect "password:" send “パスワード\n” interact ここまではうまく働いています。 この後、プロンプトを待ってサブディレクトリへ移るまでを自動化しようと思って、 #!/usr/bin/expect set timeout 10 spawn ssh ラズパイのipアドレス -l ユーザー名 expect "password:" send “パスワード\n” expect \"$\" send "cd サブディレクトリ\n” expect \"$\" interact としてみたところ、すぐにcdしてくれません。 ユーザー名@マシン名~ $ というプロンプトが出た後、しばらく待ってから ユーザー名@マシン名~ $ cd サブディレクトリ が表示実行されます。 expect \"$\" が働かず、タイムアウトしてからcdしているように見えます。 expect \"\$\" または expect \"\\\$\" に変えても同じでした。 expect \"$\"が効いていないのでしょうか? どのように直したら良いでしょうか?
Linux系 | Macintosh(Mac)・13閲覧・250
ベストアンサー
"$" は、"\\\$" とします。 あるいは man に書かれてる例を使うといいでしょう。 set prompt "(%|#|\\$) $" ;# default prompt expect -re $prompt https://linuxjm.osdn.jp/html/expect/man1/expect.1.html
ご回答ありがとうございます。 expect \"\\\$\" としていた場所を、 expect \\$ に変えたらうまく動きました。 理由はよくわかりません。 私の記述は冒頭で #!/usr/bin/expect としていて、リンク先にあるような expect -c " が無いからでしょうか? https://qiita.com/ine1127/items/cd6bc91174635016db9b https://sy-base.com/myrobotics/mac/expect_shell_script/
質問者からのお礼コメント
ありがとうございました。助かりました。
お礼日時:2020/11/24 23:26