我的unix系统上的目录中有n个文件.有没有办法编写一个shellcript,将所有这些文件通过scp传输到指定的远程系统.我将在脚本中指定密码,这样我就不必为每个文件输入密码.
而不是在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_keys
到myserver.org
服务器的新行中.如果~devops/.ssh/authorized_keys
不存在,请随意创建它.
一个清晰的操作指南,请点击这里.
#!/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
你也可以使用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/
你为什么不试试这个?
password="your password" username="username" Ip="" sshpass -p "$password" scp / /final.txt $username@$Ip:/root/
#!/usr/bin/expect -f spawn scp -r BASE.zip abhishek@192.168.1.115:/tmp expect "password:" send "wifinetworks\r" expect "*\r" expect "\r"
通配符或多个文件怎么样?
scp file1 file2 more-files* user@remote:/some/dir/