2013-04-26 108 views
1

我想寫一個bash腳本來將數據庫從遠程服務器遷移到本地。我們的一臺服務器不幸是Windows服務器。我安裝了freesshd,所以我可以使用ssh。通過遠程Windows服務器上的SSH使用bash腳本的mysqldump

當我從我的Ubuntu shell中運行此:

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反饋。爲什麼?腳本命令與常規shell命令有什麼不同?

這是我的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 

回答

2

變量將不會擴大。 改爲使用雙引號"

+0

我對此持懷疑態度,因爲當你迴應這條線時,它會在'''裏面改變,但我想這是因爲在'''之間。「非常感謝! – Joe 2013-04-26 13:42:43

相關問題