[shell] 쉘 스크립트를 사용하여 scp 파일 전송 자동화

내 유닉스 시스템의 디렉토리에 n 개의 파일이 있습니다. scp를 통해 모든 파일을 지정된 원격 시스템으로 전송하는 쉘 스크립트를 작성하는 방법이 있습니까? 각 파일에 대해 입력 할 필요가 없도록 스크립트 내에 암호를 지정하겠습니다.



답변

쉘 스크립트에서 비밀번호를 하드 코딩하는 대신 쉽고 안전한 SSH 키를 사용하십시오.

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

개인 키가 ~/.ssh/id_rsa있고 보내려는 파일을 다음으로 필터링 할 수 있다고 가정합니다.*.derp

공개 / 개인 키 쌍을 생성하려면 :

$ ssh-keygen -t rsa

위는 ~/.ssh/id_rsa(개인 키) 및 ~/.ssh/id_rsa.pub(공개 키) 2 개의 파일을 생성합니다.

설정하려면 사용을위한 SSH 키 (한 번 작업) : 복사의 내용 ~/.ssh/id_rsa.pub과의 새로운 라인에 붙여 넣기 ~devops/.ssh/authorized_keysmyserver.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


답변

이걸 해보지 그래?

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


답변

rsync를 사용할 수도 있습니다. scp IMHO보다 여러 파일에서 더 잘 작동하는 것 같습니다.

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 /


답변

#!/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/


답변

rsync는 rcp와 거의 동일한 방식으로 작동하지만 더 많은 옵션이 있으며 대상 파일이 업데이트 될 때 파일 전송 속도를 크게 높이기 위해 rsync 원격 업데이트 프로토콜을 사용하는 프로그램입니다.

rsync 원격 업데이트 프로토콜을 통해 rsync는이 패키지와 함께 제공되는 기술 보고서에 설명 된 효율적인 체크섬 검색 알고리즘을 사용하여 네트워크 연결을 통해 두 파일 세트 간의 차이점 만 전송할 수 있습니다.


한 위치에서 다른 위치로 폴더 복사

   #!/usr/bin/expect -f   
   spawn rsync -a -e ssh username@192.168.1.123:/cool/cool1/* /tmp/cool/
   expect "password:"
   send "cool\r"
   expect "*\r"
   expect "\r"