【问题标题】:Automating sftp using IBM AIX(UNIX) shell script使用 IBM AIX(UNIX) shell 脚本自动化 sftp
【发布时间】:2014-08-23 18:40:03
【问题描述】:

我正在尝试使用 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

【问题讨论】:

  • 请定义“不起作用”。预期的行为是什么?会发生什么?
  • 添加了我收到的异常。
  • 您必须拥有expect 还是会考虑其他选项?
  • 我很擅长其他选项以及anubhav ...
  • 嗨 Anubhav... 祝你好运... 我仍然被这个问题困扰.. :(

标签: unix ftp sftp aix


【解决方案1】:

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

sftp username@hostname

所以在你的情况下:

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

不过,这会提示您输入密码。如果你不想密码提示,看看这个话题:How to run the sftp command with a password from Bash script?

【讨论】:

  • 是的,我也尝试过该解决方案..但它不起作用...我的机器不支持 sshpass。
  • 还有其他选项,例如expect 或lftp。
  • 刚刚尝试使用 lftp,我收到错误 lftp: not found
  • 你需要安装它。使用您的包管理器进行安装,例如:apt-get install lftp 或 yum install lftp。
  • 如果你告诉我你当时正在使用什么,那将会有所帮助。从标签我想你在 AIX 上。我不知道 AIX 是如何工作的,但看起来有一个用于 lftp 的包:perzl.org/aix/index.php?n=Main.Lftp
【解决方案2】:

首先,学习如何设置密钥,以便无需密码即可通过 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”和其他需要处理的垃圾。你让这种方式变得比实际更难。

祝你好运

【讨论】:

  • 感谢 pedz 的回复。我尝试查看已经提供了 sfttp 自动化解决方案的 google 和 unix 论坛。但我的略有不同.. 我正在尝试通过 AIX(UNIX) 框执行 sftp,它不允许我运行相同的脚本。我试过 ssh-gen expect 但没有运气......
  • 您的脚本无法在我知道的任何平台上运行。吹掉你的剧本。设置好你的钥匙。其余的将随之而来。我每天一整天都在使用 AIX。 AIX 并不奇怪和独特。 AIX 具有任何其他机器的标准 openssl 和 openssh。
猜你喜欢
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-12
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
相关资源
最近更新 更多