1
원격 서버에서 로컬로 데이터베이스를 마이그레이션하는 bash 스크립트를 작성하려고합니다. 우리 서버 중 하나는 불행하게도 Windows 서버입니다. freesshd를 설치 했으므로 ssh를 사용할 수 있습니다.bash 스크립트를 사용하여 원격 Windows 서버에서 SSH를 통해 Mysqldump를 실행하십시오.
나는 나의 우분투 쉘에서이 프로그램을 실행할 때 : 그것은 잘 실행하고베이스를 덤프
sshpass -p 'my_password' ssh [email protected]
'C:/wamp/bin/mysql/mysql5.1.36/bin/mysqldump
-u root -pmypassword mybase --result-file=C:/wamp/outfiles/mybase.sql'
. 불행히도 내가 bash 스크립트에서 똑같은 것을 할 때 - 나는 permission denied
피드백을 받았습니다. 왜? 스크립트와 일반 셸 명령의 명령간에 차이가 있습니까?
이 내 bash는 스크립트는 지금 : 작은 따옴표 '
로 인용
#!/bin/bash
remoteHost=$1
remoteUser=$2
echo -n "Provide remote db password: "
read -s remoteDbPass
echo ""
echo -n "Provide remote server password: "
read -s remotePass
echo ""
dbName=$3
localDbName=$4
dumpPath=/var/lib/mysql/dumps/
winMysqlPath=C:/wamp/bin/mysql/mysql5.1.36/bin/
winDumpPath=C:/wamp/outfiles/
sshpass -p '$remotePass' ssh [email protected]$remoteHost '${winMysqlPath}mysqldump -u root -p$remoteDbPass $dbName --result-file=$winDumpPath$dbName.sql'
pscp -pw $remotePass [email protected]$remoteHost:$winDumpPath$dbName.sql $dumpPath$dbName.sql
mysql $localDbName < $dumpPath$dbName.sql
나는 회의적이었다. 왜냐하면 선을 에코 할 때'''내부에서 바뀌기 때문이다. 왜냐하면'''사이에 있기 때문이다. 고마워! – Joe