我一直在试图让一个PHP脚本SFTP上传文件,但失败了。 我试图在stackoverflow.com上询问我的问题,但还没有收到工作解决scheme:
https://stackoverflow.com/questions/1767117/how-to-sftp-upload-files-from-php
所以现在我想尝试一种不同的方法。 有没有办法编写一个shell脚本,可以发出几个命令sftp上传文件到另一台服务器? 如果我要从terminal一个接一个的发出命令,它会看起来像:
>sftp [email protected] >password: mypassword >put file.csv
我试着把这三行放到./automaticupload文件中。 当我执行该文件,但terminal显示我:
[email protected]'s password:
即使我在自动上传中input密码行。
我无法创build无密码的ssh / scp / sftp帐户。 远程server.com不给我ssh或scp访问。
我该怎么办?
如果您想从脚本使用sftp,则需要使用ssh-keygen(1)来设置无密码的SSH密钥,或者使用sshpass
我的投票几乎总是针对前者的,但是这可能取决于更适合的情况。
安装和使用期望,它是专为这种情况。
使用autoexpect脚本从录制的实时会话中生成期望脚本。 根据发行版,autoexpect或者包含在主要的expect包中,或者(奇怪地)包含在Ubuntu的expect-dev中。
使用socat: http : //www.dest-unreach.org/socat/
例如:
(sleep 2; echo password) | socat - EXEC: "sftp -o batchmode=no -o PubkeyAuthentication=no -b batchfile user@host",pty,setsid,ctty