データベースをリモート サーバーからローカルに移行するための bash スクリプトを作成しようとしています。残念ながら、私たちのサーバーの1つはWindowsサーバーです。freesshdをインストールしたので、sshが使えるようになりました。
これをubuntuシェルから実行すると:
sshpass -p 'my_password' ssh user@host
'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 $remoteUser@$remoteHost '${winMysqlPath}mysqldump -u root -p$remoteDbPass $dbName --result-file=$winDumpPath$dbName.sql'
pscp -pw $remotePass $remoteUser@$remoteHost:$winDumpPath$dbName.sql $dumpPath$dbName.sql
mysql $localDbName < $dumpPath$dbName.sql