我想安排从 sftp 服务器复制文件。不允许使用公钥,所以我只知道一种使用 expect 的方法。
问题是文件名每天都在变化,但文件名实际上是 date+.csv 所以我可以安排它。
但是无法设置可变文件名...
我想在 2 个脚本中做这样的事情。
脚本1(sh脚本)
文件名=日期 %Y%m%d
导出文件名
脚本2(exp脚本)
连接到sftp服务器 获取文件名。
退出
我的 bast 努力如下。
我的 *.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
======================================= Error = ./sftp.sh: 3: export: 2: 错误的变量名
--结束--
感谢您的重播..
最佳答案
“错误的变量名称”错误是由于您导出了变量的值,而不是变量的名称:export $file
错误,使用export file
在 expect 中,你通过全局 env
数组访问环境变量,所以使用 $env(file)
而不是 $file
关于linux - 如何将命令 "export" "date"输出? (linux/期望/sftp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13207543/