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

使用IBM AIX(UNIX)shell脚本自动化sftp,unix,ftp,sftp,aix,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

我正在尝试使用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
,没有
-u
选项,有关可用选项,请参阅。您可以按以下格式传递用户名:

sftp username@hostname
因此,在你的情况下:

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

sftp sftp://${USER}@${HOST}首先,学习如何设置密钥,以便无需密码即可将ssh、scp和sftp连接到服务器。看看ssh-keygen。这相当容易。我打赌这个网站上有how-to。简而言之,使用ssh-keygen生成密钥。它们是在~/.ssh中创建的。然后将公钥添加到目标主机上的~/.ssh/authorized_keys中,其中~是您要登录的用户的主目录。i、 你的例子中的“ABC”

现在,您只需执行“sftp”ABC@sftp.xyz.com“您将在sftp.xyz.com上看到sftp提示符。从那以后,让你的脚本工作起来应该很容易

我真正的建议是取消sftp并使用scp。e、 g

scp /path/to/the/source_file user@host:/remote/path/file
就这么简单。没有“cd”和其他要处理的垃圾。你让这条路变得更难了


祝你好运

请定义“不起作用”。预期的行为是什么?发生了什么呢?添加了我正在接收的异常。你必须有<代码>预期<代码>还是会考虑其他选项?我很好的选择其他选项,还有安布哈夫…嗨,Anubhav…幸运的话。。。我仍然被这个问题困扰着..:(是的,我也尝试过这个解决方案。但它不起作用…我的机器不支持sshpass。还有其他选项,如
expect
lftp
。我只是尝试使用lftp,但收到一个错误lftp:not found您需要安装它。请使用您的软件包管理器进行安装,例如:
apt get install lftp
yum install lftp
。如果您告诉我您当时使用的是什么,那会有所帮助。从标签上看,我想您是在AIX上。我不知道AIX是如何工作的,但似乎有一个lftp包:感谢您的回复pedz。我试着在google和unix论坛上查找,它们已经提供了sfttp自动化的解决方案。但我的论坛没有什么不同我正在尝试通过AIX(UNIX)执行sftp我尝试了ssh gen expect,但没有成功…你的脚本在我所知道的任何平台上都无法运行。关闭你的脚本。设置好你的密钥。其余的都会完成。我整天都在使用AIX。AIX并不是什么奇怪和独特的东西。AIX具有任何其他平台的标准openssl和openssh盒子。
scp /path/to/the/source_file user@host:/remote/path/file