Search code examples
bashsshmysqlpermission-deniedwindows-server

Mysqldump through SSH on remote windows server using bash script


I'm trying to write a bash script to migrate database from remote server to local. One of our servers is unfortunately windows server. I installed freesshd so I can use ssh.

When I run this from my ubuntu shell:

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'

It runs fine and it dumps the base. Unfortunately when I do the same thing from the bash script - I got the permission denied feedback. Why? Is there any difference between command from script and regular shell command?

This is my bash script now:

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

Solution

  • variable quoted with single quote ' will not be expanded. use double quote " instead.