-
scp로 원격 서버에 파일 전송하는 Shell Script개발 & 계발/Linux 2020. 7. 17. 08:26반응형
두개 파일을 작성해야 한다.
첫번째 파일의 이름은 반드시 "ssh_stdin" 으로 해야 하고
두번째 파일의 이름은 사용자 임의로 지정하면 됩니다.
그리고, 두 파일은 반드시 같은 폴더에 있어야 하고, 실행권한이 있어야 하며, unix(LF)의 파일 형태이어야 한다.
unix(LF)가 여부를 확인하려면, linux CLI 명령어로 "file 파일명" 이라고 실행해서,
"Bourne-Again shell script, ASCII text executable" 라고 나오면 된다.
만약 Window 계열에서 작업했다면 "dos2unix 파일명"으로 unix 형태로 바꿔주면 된다. (yum이나 apt-get으로 설치함)
관련 URL : https://amornatura.tistory.com/42 [Amor Natura]
첫번째 파일 (파일명: ssh_stdin)
#!/bin/bash if [ -n "$SSH_ASKPASS_PASSWORD" ]; then cat <<< "$SSH_ASKPASS_PASSWORD" elif [ $# -lt 1 ]; then echo "Usage: echo password | $0 <ssh command line options>" >&2 exit 1 else read SSH_ASKPASS_PASSWORD SSH_ASKPASS_PASSWORD="원격서버의 비밀번호" export SSH_ASKPASS=$0 export SSH_ASKPASS_PASSWORD [ "$DISPLAY" ] || export DISPLAY=dummydisplay:0 exec setsid "$@" fi
두번째 파일 (파일명: 임의로 설정)
#!/bin/bash PASSWD="myPasswd!" curDir=$(pwd) SSH_STDIN=$curDir/ssh_stdin sshOption="-o StrictHostKeyChecking=no -o ConnectTimeout=1 -o NumberOfPasswordPrompts=1" SVR_LIST="원격서버IP1 원격서버IP2" mpList=$(eval echo $SVR_LIST) for i in $mpList do echo "---------"$i echo $PASSWD | $SSH_STDIN scp $sshOption $1 "root@"$i":/파일경로/"$i".txt" done echo "FINISH"
하나의 서버에서로만 파일을 전송하려면, SVR_LIST="원격서버IP1" 이렇게만 적으면 된다.
출처 : https://yongary.tistory.com/93
'개발 & 계발 > Linux' 카테고리의 다른 글
dnsmasq 관련 자료 (0) 2019.03.21 iptables로 리눅스 서버를 스위치(NAT)로 사용하기 (0) 2019.03.19 CentOS 5.x yum install, update 시 에러 대응 방법 (0) 2018.11.13 리눅스, iptables로 DNAT(Destination NAT) 설정 하는 방법 (0) 2018.07.02 [Linux] yum으로 설치가 잘 안될 때 (0) 2017.08.11