私はSFTPサーバーからのファイルのダウンロードを自動化するbashスクリプトを書くのに最後の3日間から苦労してきました。私はプログラムの構造を作りました。スニペットでテストしましたが、これは私が執着しているものです。期待どおりにSFTPサーバーからsftp lsコマンドの出力をキャプチャするには?
私は、このようにSFTPサーバにログイン:
/usr/bin/expect <<EOD
spawn sftp $ftp_server
expect "password:"
send "$password\r"
expect "sftp>"
send "ls\r"
expect "sftp>\r"
send "exit\r"
EOD
私はダウンロードするファイルを決定するls
コマンドの出力をループしたいです。出力をテキストファイルにリダイレクトしてそこからファイル名を取得しようとしましたが、 "sftp>"プロンプトやその他の無関係な情報も格納されています。クリーンls
の出力をexpect
として保存してループするにはどうすればよいですか?
なし*クリーン*ソリューションはここにありません。あなたは 'sftp'セッションと手動で対話しているときと同じように、文字列操作コマンドを使用して興味のない情報をフィルタリングする必要があります(例えば、' sftp> 'プロンプトが表示され、あなたの心はそれを無視するように指示します。:) – pynexj
sftpコマンドラインユーティリティの自動化に問題がある場合は、独自のユーティリティをperl、python、c#、javaなどで作成することを検討する必要があります。これらの言語にはすべてssh/sftpクライアントライブラリがあり、sftpプロトコルをより詳細に制御できます。 – Kenster