0

これが私のスクリプトです

#!/bin/ksh
RemoteFile=`grep "${File}" ${TempLog}` --> the value of the variable is Site Information_2013-07-04-00-01-26.CSV

/usr/bin/expect << EOF
spawn sftp user@server
expect "password:"
send "123fakepassword\n"
expect "sftp>"
send "cd /home/user/pickup_dir\n"
expect "sftp>"
send "lcd /home/user/Scripts/mart/wmt/RAMDISK0\n"
expect "sftp>"
send "get $RemoteFile\n" ---> I'm  trying to pass it here so I can download the file. 
expect "sftp>"
send "exit\r"
EOF

しかし、運が悪い!, 二重引用符でファイル名を渡して、(get "Site Information_2013-07-04-00-01-26.CSV\n") として実行するにはどうすればよいですか?日付のファイル名の変更。それとも、私はそれを間違っていますか?パスワードをハードコードするのは良くないことはわかっていますが、ssh-key を使用してパスワードなしの sftp を使用することはできません。ありがとう!

4

2 に答える 2

0
#!/bin/bash

while true
do

/usr/bin/expect <<EOF
set timeout 300
spawn sftp $remoteUser@$remoteIp
expect "yes/no" { 
    send "yes\r"
    expect "*?assword" { send "$remotePass\r" }
    } "*?assword" { send "$remotePass\r" }
expect "sftp> " { send "cd $RemoteFolderPath\r" }
expect "sftp> " { send "mget $remoteFileName\r" }
expect "sftp> " { send "quit\r" }
interact
EOF

done

exit
于 2015-09-10T05:45:47.847 に答える