执行错误shell脚本时,Spawn ID EXP7不打开



我正在使用cron运行一个通过SFTP连接到另一台服务器并上传文件的脚本。偶尔,我会收到错误:执行send " ls r r " 时, Spawn-id-exp7-not-open,并且脚本将停止执行(不会发送文件)。但是,大多数情况下,脚本将没有错误。

以下是我用来连接的脚本:

#!/bin/bash
HOST="removed.com:API"
USER="user"
PASS="removed"
VAR=$(expect -c "
  spawn sftp -o "BatchMode no" -b /var/www/prep/cmd -P 13266 $USER@$HOST
  expect "Password:"
  send "$PASSr"
  expect "\\$"
  send "lsr"
  expect -re "$USER.*"
  send "exit"
")

echo "==============="
echo "$VAR"

下面是我连接(CMD)之后运行的脚本:

put "/var/www/prep/1.xml"
put "/var/www/prep/2.xml"

我看了一个类似的问题:Send:Spawn ID EXP7不打开,但没有帮助我。也许连接在CMD脚本运行之前结束?

感谢您的帮助!

您正在将sftp与 -b一起使用。因此,一旦提供密码,就不会进行交互:SFTP将从批处理文件和退出中读取命令。

从"人"页面:

-b batchfile

批处理模式从输入batchfile而不是stdin读取一系列命令。由于缺乏用户交互,因此应与非交互性身份验证一起使用。可以使用" - "的批处理表示标准输入。如果以下任何命令失败,则SFTP将中止:获取,放置,重命名,LN,RM,MKDIR,CHDIR,LS,LS,LCHDIR,CHMOD,CHMOD,CHOWN,CHGRP,CHGRP,LPWD,LPWD,DF,SYMLINK,SYMLINK和LMKDIR。可以通过将命令抑制错误的终止,通过将命令以" - "字符前缀(例如-rm /tmp/blah*)。

相关内容

  • 没有找到相关文章

最新更新