【发布时间】: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)作为返回字符。