【发布时间】:2012-10-23 20:07:57
【问题描述】:
我想从 sftp 服务器安排文件复制。不允许使用公钥,所以我只知道一种使用期望的方法。
问题是文件名每天都在变化,但文件名实际上是日期+.csv,所以我可以安排它。
但无法设置变量文件名...
我想在 2 个脚本中做这样的事情。
脚本 1(sh 脚本)
文件名=日期 %Y%m%d
导出文件名
脚本 2(exp 脚本)
连接到 sftp 服务器 获取文件名。
退出
我的努力如下。
我的 *.sh 脚本 =
开始
#!/bin/sh
file=$(date --date='-2 days' +%Y%m%d.csv)"
# looking for something like this (20121031.csv)
export file
expect /home/desk4/task/sftp.exp
结束
我的期望脚本位于“/home/desk4/task/sftp.exp”
开始
!/usr/bin/expect
spawn /usr/bin/sftp user@server.com
expect "user@server.com's password:"
send "password"
send "\r"
expect "sftp>"
spawn "get $file \r"
expect "sftp>"
send "bye \r"
结束
错误
./sftp.sh: 3: export: 20121031.csv: 变量名错误
当我为测试目的更新 sh 脚本时,如下所示...
#!/bin/sh
file=$(date)
export $file
expect /home/harshit/Desktop/1/sftp.exp
======================================== 错误 = ./sftp.sh: 3: export: 2: bad variable name
--结束--
感谢您的重播..
【问题讨论】:
-
您在 sftp.sh 中的 file= 之后错过了引号 - 导出应该没有 $... 您甚至可以像
export file="...那样将其放在一行中 -
有点跑题了,为什么要用expect+passwords而不是pubkey认证呢?