I have three servers. nginx00 (master nginx server) and nginx01 and nginx02
(slave nginx servers).
nginx00 is a staging environment that I do testing on. Once it goes live I run
a bash script that syncs the config files and restarts the nginx daemon. It's
working fine as root. However, I am bound by rules in my company to run
commands as users and not the root user.
I have setup keys for ssh for all my sysadmin users, and it works fine if I
just us it.
rsync -q -avz --delete -e 'ssh -i /home/dpich/.ssh/id_rsa' --rsync-path='sudo
rsync' /etc/nginx/ dpich@balancer01:/etc/nginx/
If I run it in this bash script...
#!/bin/bash
currentuser=$(whoami)
OPTS=(-q -avz --delete -e \'ssh -i /home/$currentuser/.ssh/id_rsa\'
--rsync-path=\'sudo rsync\')
SRC=(/etc/nginx/)
RSYNC_CMD=(rsync)
for h in nginx0{1..2} ; do
DST=$currentuser'@'$h':/etc/nginx/'
rsync ${OPTS[@]} ${SRC} ${DST}
done
I keep getting this error:
dpich@nginx00:~$ /usr/sbin/deploy2.sh
Missing trailing-" in remote-shell command.
rsync error: syntax or usage error (code 1) at main.c(430) [sender=3.1.1]
Missing trailing-" in remote-shell command.
rsync error: syntax or usage error (code 1) at main.c(430) [sender=3.1.1]
dpich@nginx00:~$
I'm 1000% convinced it has to do with quotes, but I haven't been able to solve
this.
Any help would be appreciated.