当前位置:  开发笔记 > 运维 > 正文

使用shell脚本自动执行scp文件传输

如何解决《使用shell脚本自动执行scp文件传输》经验,为你挑选了6个好方法。

我的unix系统上的目录中有n个文件.有没有办法编写一个shellcript,将所有这些文件通过scp传输到指定的远程系统.我将在脚本中指定密码,这样我就不必为每个文件输入密码.



1> Pradeep Pati..:

而不是在shell脚本中硬编码密码,使用SSH密钥,它更容易和安全.

$ scp -i ~/.ssh/id_rsa devops@myserver.org:/path/to/bin/*.derp .

假设您的私钥是 ~/.ssh/id_rsa

要生成公钥/私钥对:

$ ssh-keygen -t rsa

以上将生成2个文件,~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥)

设置SSH密钥以供使用(一次性任务):复制内容~/.ssh/id_rsa.pub并粘贴~devops/.ssh/authorized_keysmyserver.org服务器的新行中.如果~devops/.ssh/authorized_keys不存在,请随意创建它.

一个清晰的操作指南,请点击这里.



2> JohnA..:
#!/usr/bin/expect -f

# connect via scp
spawn scp "user@example.com:/home/santhosh/file.dmp" /u01/dumps/file.dmp
#######################
expect {
  -re ".*es.*o.*" {
    exp_send "yes\r"
    exp_continue
  }
  -re ".*sword.*" {
    exp_send "PASSWORD\r"
  }
}
interact

http://blogs.oracle.com/SanthoshK/entry/automate_linux_scp_command



3> bsisco..:

你也可以使用rsync.对于多个文件似乎比scp恕我直言更好.

rsync -avzh /path/to/dir/ user@remote:/path/to/remote/dir/

更新

您可以通过添加'-e'开关来通过ssh使用rsync:

rsync -avzh -e ssh /path/do/dir/ user@remote:/path/to/remote/dir/


这仍将调用交互式密码提示.我相信OP想要一个完全自动化的解决方案
关于scp的好处是它使用了安全通道.rsync没有.
你可以强制rsync使用ssh:'rsync -avz -e ssh remoteuser @ remotehost:/ remote/dir/this/dir /'

4> Veerendra..:

你为什么不试试这个?

password="your password"
username="username"
Ip=""
sshpass -p "$password" scp //final.txt $username@$Ip:/root/



5> 小智..:
#!/usr/bin/expect -f
spawn scp -r BASE.zip abhishek@192.168.1.115:/tmp
expect "password:"
send "wifinetworks\r"
expect "*\r"
expect "\r"



6> 小智..:

通配符或多个文件怎么样?

scp file1 file2 more-files* user@remote:/some/dir/

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有