Se você quiser usar o sftp de um script, precisará setup senhas SSH sem senha com ssh-keygen (1) ou use sshpass
Meu voto quase sempre seria para o primeiro, mas pode depender da situação que é mais apropriada.
Estou tentando obter um script PHP para o upload de um arquivo SFTP, mas falhei. Eu tentei fazer minha pergunta no stackoverflow.com, mas não recebi uma solução de trabalho:
Então agora eu quero tentar uma abordagem diferente. Existe uma maneira de escrever um script de shell que pode emitir vários comandos para enviar um arquivo sftp para outro servidor? Se eu fosse para emitir comandos um por um do terminal, seria parecido com:
>sftp [email protected]
>password: mypassword
>put file.csv
Eu tentei colocar essas três linhas em um arquivo ./automaticupload. Quando eu executei o arquivo, mas o terminal me mostra:
[email protected]'s password:
mesmo que eu digite a senha no automaticupload.
Não consigo criar uma conta ssh / scp / sftp sem senha. O servidor remoto.com não me fornece acesso ssh ou scp.
O que devo fazer?
Se você quiser usar o sftp de um script, precisará setup senhas SSH sem senha com ssh-keygen (1) ou use sshpass
Meu voto quase sempre seria para o primeiro, mas pode depender da situação que é mais apropriada.
Instale e use, espere, ele é projetado para exatamente esse tipo de situação.
Use o script de autoexpecto para gerar um script de expectativa a partir de uma sessão ao vivo gravada. Dependendo da distribuição, o autoexpect é incluído no pacote principal do expect, ou (estranhamente) no expect-dev no Ubuntu.
Use socat: link
Por exemplo:
(sleep 2; echo password) | socat - EXEC: "sftp -o batchmode=no -o PubkeyAuthentication=no -b batchfile user@host",pty,setsid,ctty
Tags sftp