【问题标题】:can't create folder with expect script无法使用期望脚本创建文件夹
【发布时间】:2015-02-21 08:40:43
【问题描述】:

我有这个脚本

#!/usr/bin/expect

set DATE [exec date +%F]
spawn sftp user@192.168.0.20
expect "password:"
send "password\n"
expect "sftp>"
send "cd /getfile/$DATE/ \n"
expect "sftp>"
send "lcd /putfile/ \n"
expect "sftp>"
send "mkdir $DATE"
expect "sftp>"
send "lcd /putfile/$DATE \n"
expect "sftp>"
send "mget *.* \n"
expect "sftp>"

send "quit \n"

这里一切正常,但它不会创建目录。错误是:

无法创建目录

我不知道我做错了什么。任何帮助将不胜感激。

【问题讨论】:

  • 可以直接在shell中使用这些命令吗?mkdir的响应是什么?
  • 我可以在 shell 中使用 mkdir 并且它创建目录没有任何问题,而且当我单独使用 expect Shell 时它可以创建目录但不能在上面的脚本中创建!!! @sputnick 需要此脚本在 cron 中运行,因此如果您有任何示例,我还没有完成生成密钥,如果
  • 我正在尝试在目标 BTW 中创建目录...也许在此脚本中我尝试在 getfile 位置创建?不确定
  • @hi4ppl :您的脚本将尝试在远程机器的目录中创建。使用lmkdir在本机创建目录。
  • 其实问题不大,但是为什么要在return之前发送空格呢?为什么目录名称以斜线结尾?如果我没记错的话,expect 的send 命令通常使用\r(不是\n)作为返回字符。

标签: shell sftp expect


【解决方案1】:

如果你想将文件下载到一个本地的新目录,为什么不用expect的exec而不是sftp来创建这个目录呢?

#!/usr/bin/expect

set DATE [exec date +%F]
exec mkdir "$DATE"
cd "$DATE"
spawn ...

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 2021-12-22
    • 2020-04-16
    • 1970-01-01
    • 2017-05-02
    • 2012-07-24
    • 2016-10-07
    • 2010-11-22
    • 1970-01-01
    相关资源
    最近更新 更多