0

これは、ディレクトリローカルからファイルを取得し、バックアップディレクトリにコピーして、SFTP 経由で送信する、Solaris で実行する必要がある bash スクリプトです。問題は、4〜5MBのデータしか送信せず、手動ですべてが正常に機能している間にハングすることです(mputのどこかだと思います)。本当にどうしたらいいのかわからない…

#!/bin/bash
export LD_LIBRARY_PATH=".:../tool/bin:$LD_LIBRARY_PATH"
dirlocal=</export/home/somedir>
dirlocal_backup=</export/home/somebackupdir>
filename=*
if [ ! -e ${dirlocal}/${filename} ]; then
exit
fi
hostname=<some_ip_address>
username=ftp
password=FTP
remotedir=<somedir>
cd ${dirlocal}
cp * ${dirlocal_backup}
../tool/bin/expect -f - <<EOFEXPECT1 

set timeout 10
spawn -nottycopy -nottyinit sftp ${username}@${hostname}
expect {
     (yes/no) {send yes\r ; exp_continue }
     "*assword" {send ${password}\r ; exp_continue }
    }

expect -timeout 10 sftp { }
send "cd ${remotedir}\r";
expect -timeout 10 sftp { }
send "mput ${filename}\r";
expect -timeout -1 sftp {send "bye\r" }

#send "exit\r"
expect eof
EOFEXPECT1
if [ $? -eq 0 ]
then
rm ${filename} > /dev/null 2>&1
else
echo "something"
fi
4

1 に答える 1

0

コメントを回答としてマークする機能のリクエストは引き続き拒否されるため、上記のソリューションをここにコピーします。

最終的に機能させました。編集された期待ステートメントが手がかりでした。手伝ってくれてありがとう!ロシアからよろしく!– user2107698

于 2013-08-30T08:42:35.167 に答える