使用IBM AIX(UNIX)shell脚本自动化sftp

时间:2014-07-02 20:09:18

标签: unix ftp sftp aix

我正在尝试使用UNIX shell脚本自动化我的SFTP命令,但由于某种原因它不起作用。这是我的代码如下。请分享您的想法/见解。

#This ftp script will copy all the files from source directory into the local directory.
#!/bin/sh
HOST='sftp.xyz.com'
USER='ABC'
PASSWORD='123'
SRC_DIR='From_Src'
TRGT_DIR='/work/'
FILE='abc.txt'

sftp -u ${USER},${PASSWORD} sftp://${HOST} <<EOF
cd $SRC_DIR
lcd $TRGT_DIR
get $FILE
bye

EOF

echo "DONE"

当我尝试执行上面的代码时,我得到以下错误。

sftp: illegal option -- u
usage: sftp [-1246Cpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
          [-D sftp_server_path] [-F ssh_config] [-i identity_file] [-l limit]
          [-o ssh_option] [-P port] [-R num_requests] [-S program]
          [-s subsystem | sftp_server] host
       sftp [user@]host[:file ...]
       sftp [user@]host[:dir[/]]
       sftp -b batchfile [user@]host

2 个答案:

答案 0 :(得分:1)

-u没有sftp选项,请参阅manual了解可用选项。您可以使用以下格式传递用户名:

sftp username@hostname

所以在你的情况下:

sftp sftp://${USER}@${HOST} <<EOF

这会提示您输入密码。如果您不想要密码提示,请查看以下主题:How to run the sftp command with a password from Bash script?

答案 1 :(得分:0)

首先,了解如何设置密钥,以便您可以在没有密码的情况下将ssh,scp和sftp添加到服务器。看看ssh-keygen。这很容易。我敢打赌这个网站上有多少东西。简而言之,使用ssh-keygen生成密钥。它们是在〜/ .ssh中创建的。然后将您的公钥添加到目标主机上的〜/ .ssh / authorized_keys,其中〜是您要登录的用户的主目录。即你的例子中的“ABC”。

现在,您可以执行“sftp ABC@sftp.xyz.com”,您将在sftp.xyz.com上进行sftp提示。从那里开始,让脚本工作应该很容易。

我真正的建议是吹掉sftp并使用scp。例如

scp /path/to/the/source_file user@host:/remote/path/file

就这么简单。没有“cd”和其他要处理的垃圾。你这样做比实际更难。

祝你好运