我在这个网站上潜伏了很长一段时间,因为我在一个期望/SH 脚本中做一个 SFTP。SSH keygen 对我们来说不是一个选项,因为我们无法访问远程服务器,所以我们正在研究使用 expect 来为 SFTP 提供密码 arg。
这是我正在处理的脚本,除了我想在传输(“mput”)成功完成时捕获或记录到输出文件之外,一切都在这里工作。关于在“mput”之后放置什么代码的任何建议,因为如果我在之后添加一个 expect_out(buffer),它就会失败。
#!/bin/ksh
DIRROOT=/apps/gen/e2k/sys/bpp
COPYDIR=$DIRROOT/SENT
FILEHASH=TEST.SOME.FILE.*
if [ ! -f $COPYDIR/$FILEHASH ]; then
echo "No File"
fi
# New FTP credential from GIC
FTPSERV=**********
FTPUSER=**********
FTPPWD=**********
FTPDIR=/to-scs
/usr/local/bin/expect -f - <<EOFEXPECT1
#exp_internal 1
set timeout -1
set log [open "/dir/dir1/dir2/MIKETEST.txt" w]
spawn sftp -oPort=10022 $FTPUSER@$FTPSERV
expect "password:"
send "$FTPPWD\r";
expect "sftp> "
send "lcd $COPYDIR \r";
expect "sftp> "
send "cd /recipient \r";
expect "sftp> "
send "mput TEST.SOME.FILE.*\r";
put $log $expect_out(buffer)
close $log
expect "sftp> "
send "bye\r";
expect eof
EOFEXPECT1
if [ $? -eq 0 ]
then
echo "success"
else
echo "fail"
fi