我是 Ubuntu bash 新手。我使用 sshpass
成功登录到 sFTP 服务器.但是一旦建立连接,我还需要从服务器下载一个目录。我的脚本似乎无法通过连接线。这就是我的脚本 (.sh) 文件中的内容:
#!/bin/bash
sshpass -p 'MY_PASSWORD' sftp -o StrictHostKeyChecking=no -o HostKeyAlgorithms=+ssh-dss MYUSER@MYSFTPSERVERADDRESS
echo "hello"
get -r Export
在上面的片段中,我的
echo
和我的get
不被执行。终端正在等待我的输入 sftp>
迅速的。
最佳答案
使用 scp
会更好地为您服务而不是 sftp
如果可以的话,共享 key 而不是将密码放入脚本中,但如果您必须使用 sftp
出于某种原因,它可以从 heredoc 获取命令。喜欢:
sshpass -p 'MY_PASS' sftp -o StrictHostKeyChecking=no -o HostKeyAlgorithms=+ssh-dss MYUSER@MYSFTPSERVERADDRESS <<EOF
get -r Export
EOF
请注意
echo
不是有效的 sftp
命令。你可以放任何你想要的命令
sftp
在 EOF
之前执行它会依次执行它们。如果您只想获取该目录,使用
scp
可能会更简单。如果你可以的话:sshpass -p 'MY_PASSWORD' scp -o StrictHostKeyChecking=no -o HostKeyAlgorithms=+ssh-dss -r MYUSER@MYSFTPSERVERADDRESS:Export .
关于bash - 脚本中sshpass登录后执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44458291/