1

Linux サーバーから FTP 対応の Windows サーバーへのファイルのアップロードを自動化しようとしています。SFTPを使用して手動で正常に実行してから、putコマンドを発行しています。ただし、cron から呼び出されると、私のスクリプトはパスワードのために停止し続けます。

以下は私が使用しようとしているコードです:

#!/usr/bin/expect
#!/bin/sh
clear
spawn sftp remoteuser@43.123.0.10
expect "password"
send "world"
expect eof

現状では、パスワードを要求するたびに停止します。send "world"がパスワード ダイアログを完了しないのはなぜですか?

アップデート:

#!/usr/bin/expect
#!/bin/sh
clear
spawn sftp remoteuser@43.123.0.10
expect "remoteuser@43.123.0.10's password:"
send "world"
expect eof

次のエラーが表示されます。

xml_reports.sh: line 5: spawn: command not found
couldn't read file "remoteuser@43.123.0.10's password:": no such file or directory
xml_reports.sh: line 7: send: command not found
couldn't read file "eof": no such file or directory
4

3 に答える 3

4

このようにしてみてください:

#!/bin/bash
expect -c "
spawn sftp remoteuser@XX.XX.XX.XX
expect \"password\"
send \"PASSWORD\r\"
interact "

例: http://www.techtrunch.com/scripting/lazy-admins-part-2

于 2013-01-04T15:44:52.193 に答える
0

何が起こっているのかというと、Expect はまだパターンが到着するのを (タイムアウトまで) 待っているということです。「パスワード」が sftp のプロンプトになく、「パスワード」などである可能性があります。

于 2013-01-04T15:33:23.177 に答える
0

実行時に引数を使用する必要があります。この記事を読んでください。これを正しく行う方法を説明します。

于 2013-01-04T15:32:49.093 に答える