linux - 如何将命令 "export" "date"输出? (linux/期望/sftp)

标签 linux sftp expect

我想安排从 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/

相关文章:

php - 同时从 php 调用 python 脚本。如何在后台运行python脚本(异步)

ruby - 如何确定 PTY.spawn 何时在 ruby​​ 脚本中完成,然后开始新进程

ruby - gem 命令默默地什么也不做

php - SCP 与 PHP - 不起作用

java - 由 : com. jcraft.jsch.JSchException 引起:使用 sftp 私钥进行身份验证失败

dataset - 如何在 ADFv2 中以表达式作为值传递参数?

期望中的正则表达式?

linux - 期望使用分离屏幕编写脚本

linux - 使用包含文件夹的名称搜索并替换为多个文件

linux - 在 Node.js 中跟踪命名管道