Linux脚本问题

时间:2011-08-16 08:45:46

标签: linux scripting

我是脚本等新的相对论,但我正在尝试创建一个将在特定时间运行的脚本,该脚本将网络驱动器备份到非现场目的地。

我有手动工作的命令并且已经计算出时间,但是在尝试运行脚本时出现以下错误:

    cd /volume1/Data
    lftp -u [username],[password] [Destination]
    Mirror [directoryname] -R -n

无法cd到volume1 / Data,找不到第3行镜像。

我要检查大小写和拼写。

嗯嗯

3 个答案:

答案 0 :(得分:2)

Mirror是一个lftp命令,脚本执行它就好像它是lftp进程结束后的shell命令,从未发生过,因为程序是交互式的,并等待输入。您需要做的是将lftp命令传递给lftp的标准输入:

cd /volume1/Data 
echo "Mirror [directoryname] -R -n" | lftp -u [username],[password] [Destination]

或者,您可以使用lftp执行脚本的功能(查看-f选项的手册)并将lftp命令分成单独的文件,然后将此文件传递给lftp,或查看-e选项。它允许您将lftp命令内联到参数列表中。

答案 1 :(得分:2)

您需要将mirror命令传递给lftp

cd /volume1/Data
user=joe
passwd=foo
host=myhost
dir=somedir

lftp -e "mirror $dir -R -n" -u $user,$passwd $host

答案 2 :(得分:2)

你也可以使用这样的“here here”:

#!/bin/sh
host=Destination
user=username
pass=password
folder=directoryname
cd /volume1/Data
lftp -u $user,$pass $host  << EOF
mirror $folder -R -n
EOF