質問: ### 試したこと expectを使用せずssh単体で以下コマンドを実行したところ、ファイルのコピーに成功しました。 よって、sshのコマンド自体に問題はないことがわかります。 ssh -i /home/user/.ssh/id_rsa user@hostname 'sudo cp /var/log/maillog /home/user/' expect内のsshコマンドで、コピー先ファイル名を指定していなかったので、「/home/user/maillog」とコマンドを修正して再度実行しましたが、「No such file or directory」が出力されました。 私の知らないexpectの制約があるのかと思いましたがそれを見つけられず、ここに質問した次第です。 ぜひご協力をお願いいたします。
回答: > > bash: sudo cp /var/log/maillog /home/user/: No such file or directory > > > bash が `sudo cp /var/log/maillog /home/user/` を(コマンドラインではなく)一つのコマンドとして実行しようとしているように見えます。 `expect -c` の引数として渡していてややこしいのですが、 とりあえず `spawn` の行でクォート `'` を両方外したら ssh が `bash` ではなく `sudo` を実行するのでうまくいくと思います。