Ank*_*tha 8 scp sftp shell-script
我想使用 shell 脚本从另一台服务器拉取文件。我已经编写了一个脚本,我可以在其中执行此操作,但我希望该脚本以非交互方式工作,这样它就不会提示我输入密码,并且如果我对其进行硬编码并让脚本具有所需的内容,则它会自动工作。
FTP
然而,我之前已经这样做了,在新服务器中,FTP
连接被阻止,我们只能使用SCP
或SFTP
。我之前的脚本是这样的,它曾经使用过FTP
并且在不要求密码的情况下很好地完成了工作:
#!/bin/bash -vx
ftp -in 100.XXX.XXX.XX<<END_SCRIPT
quote USER username
quote PASS password
bin
prompt off
cd /directory/in/remote/host
lcd /directory/in/local/machine
mget *
bye
END_SCRIPT
Run Code Online (Sandbox Code Playgroud)
我SFTP
在脚本中尝试了类似的 for并且它适用于交互模式,但就像FTP
我无法使用SFTP
. 以下是我从远程机器获取特定文件的代码:
#!/bin/bash -vx
path="/tmp/testanks"
sftp username@100.XXX.XX.XXX <<EOT
cd $path
get Bharti*
quit
EOT
Run Code Online (Sandbox Code Playgroud)
我如何以一种可以为该脚本提供用户名和密码以使其非交互式的方式更改上述代码。
我知道提供硬编码密码是一个安全问题,但现在我更关心的是立即获取文件。如果我能获得安全的方法以及我想要的答案,我将非常感激。
Per*_*ere 10
随着卷曲:
curl sftp://example.com/file.zip -u user:password
Run Code Online (Sandbox Code Playgroud)
请注意,公钥身份验证优于使用密码:
curl sftp://example.com/file.zip -u user
这将尝试用作~/.ssh/id_rsa
私钥。您可以使用 指定另一项--key
。
解决方法是使用scp
,你将本地的公钥添加到远程authorized_files的末尾。
然后
scp username@100.X.X.X:Bharthi/* $path
Run Code Online (Sandbox Code Playgroud)
在本地主机上,查看.ssh
目录,如果您没有任何 .pub,请先执行以下操作(并且仅执行一次)
ssh-keygen (1)
scp-copy-id username@100.X.X.X (2)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28148 次 |
最近记录: |