Shell 要上载到sftp的脚本不工作
我有两个Linux机器,我正在尝试使用sftp将文件从一台机器上传到另一台机器。我已经将终端中使用的所有命令都放在下面的脚本中Shell 要上载到sftp的脚本不工作,shell,sftp,Shell,Sftp,我有两个Linux机器,我正在尝试使用sftp将文件从一台机器上传到另一台机器。我已经将终端中使用的所有命令都放在下面的脚本中 #!/bin/bash cd /home/tests/sftptest sftp user1@192.168.0.1 cd sftp/sftptest put test.txt bye 但这是不工作的,给我的错误,如目录不存在。此外,终端保持在>sftp中,这意味着不执行bye。我怎样才能解决这个问题 我建议使用: #/bin/bash cd/home/tests/s
#!/bin/bash
cd /home/tests/sftptest
sftp user1@192.168.0.1
cd sftp/sftptest
put test.txt
bye
但这是不工作的,给我的错误,如目录不存在。此外,终端保持在>sftp中,这意味着不执行bye。我怎样才能解决这个问题 我建议使用:
#/bin/bash
cd/home/tests/sftptest
sftpuser1@192.168.0.1我建议使用:
#/bin/bash
cd/home/tests/sftptest
sftpuser1@192.168.0.1当您运行sftp
命令时,它会连接并等待您键入命令。它开始了它自己的“子shell”
脚本中的其他命令仅在sftp
命令完成后执行。它们显然会作为本地shell命令执行,因此特别是put
将作为不存在的命令失败
您必须将sftp
命令直接提供给sftp
命令
一种方法是使用输入重定向。例如,@cyrus使用“此处文档”作为答案已经表明:
sftp username@host <<< EOF
sftp_command_1
sftp_command_2
EOF
其中,sftp.txt
脚本包含:
sftp_command_1
sftp_command_2
当您运行sftp
命令时,它会连接并等待您键入命令。它开始了它自己的“子shell”
脚本中的其他命令仅在sftp
命令完成后执行。它们显然会作为本地shell命令执行,因此特别是put
将作为不存在的命令失败
您必须将sftp
命令直接提供给sftp
命令
一种方法是使用输入重定向。例如,@cyrus使用“此处文档”作为答案已经表明:
sftp username@host <<< EOF
sftp_command_1
sftp_command_2
EOF
其中,sftp.txt
脚本包含:
sftp_command_1
sftp_command_2
大多数FTP客户端都是为交互使用而设计的。软件包中的程序是根据您的需要设计的,用于自动化FTP传输。我发现它们更容易使用。Blaster Alfredψ爵士,我强烈建议您查看rsync
,而不是sftp
。它更加灵活和有能力(由那些编写SAMBA的聪明人积极开发并带给您)。创建一个密钥对,以允许两个linux设备之间的无密码ssh连接。rsync
是用于文件传输的瑞士军刀解决方案。大多数FTP客户端都是为交互式使用而设计的。软件包中的程序是根据您的需要设计的,用于自动化FTP传输。我发现它们更容易使用。Blaster Alfredψ爵士,我强烈建议您查看rsync
,而不是sftp
。它更加灵活和有能力(由那些编写SAMBA的聪明人积极开发并带给您)。创建一个密钥对,以允许两个linux设备之间的无密码ssh连接。rsync
是您用于文件传输的瑞士军刀解决方案。