2013-11-02 26 views
0

我devloping一个shell脚本scp a.txt到不同的服务器(box1和box2)和脚本在boxmain服务器上运行。以下是要求,发送前一天的文件到UNIX服务器

  1. 我的脚本将连接到DB2数据库,并生成A.TXT文件中boxmain
  2. A.TXT将scp'ed到BOX1一旦生成文件
  3. 生成的文件在boxmain(A.TXT)将scp'ed到BOX2第二天,即这将是前一天的boxmain文件

注意的SCP:BOX1,BOX2,boxmain是服务器

我试了下面,一个可以完成前两项任务,但是会陷入第三。请建议如何实现第三点。提前致谢。

db2 -tvf query.sql #creates a.txt
scp a.txt [email protected]:/root/a.txt

now=$(date +"%m/%d/%Y")
cp a.txt a_$now.txt

我的操作系统版本为AIX test 1 6

+0

尝试'date -d'1天前'+%m /%d /%Y'(可能在AIX上不可用) – kev

回答

0

有一个轻微的问题,你的问题的定义:在您的源文件名的名称中使用 '/'将它解释为不仅仅是一个文件名,而且还包含一个包含目录的路径,因为'/'是目录分隔符。使用now=$(date +"%m-%d-%Y")而不是now=$(date +"%m/%d/%Y")可能是个好主意。

但回答你的实际问题,我想归结为这个:如何获取日期(1)在AIX上输出昨天的日期?

答案是从The UNIX and Linux Forums找到的:只需设置描述你的时区的环境变量就可以得到+24,你将从输出date得到昨天的日期。

例如:

用户@ FOO〜]#日期 周一11月4日九点40分34秒EET 2013 用户@福尔〜]#TZ = EST + 24日期 太阳11月3日7时40分: 36 EST 2013

将此应用于您的问题,只需在运行now=$(date +"%m/%d/%Y") ie时为TZ设置适当的值即可。使用now=$(TZ=ZONE+24 date +"%m-%d-%Y")(注意路径分隔符上的更正,并将ZONE替换为您自己的时区)。