我有点困惑于用rsync运行命令。
我的场景: abc.com xyz.com
abc.com的根公钥被添加到xyz.com,反之亦然。
但是,我能够与普通用户测试进行rsync,但是我希望在服务器xyz.com上执行sudo状态命令,并且数据的副本也必须执行。
在abc.com中,我执行以下命令
sudo rsync -avz -e "ssh -i /root/.ssh/id_rsa.pub" /var/lib/cdsw/ xyz.com:/var/lib/cdsw/但是我想在远程服务器xyz.com上rsync之前执行sudo状态,并执行sudo启动,当rsync完成复制时,如何使用上面的命令进行链接?
我试过所有的可能性,但都没有用。
请帮帮忙。
发布于 2018-04-10 21:59:32
这真的不是rsync的问题..。但更多的是bash/脚本问题。
实际上,-e参数的设计只是为了让远程服务器上的shell运行。它不是用来执行任意命令的。你真的只有两个选择,我可以从我的头顶上想到:
1)多个ssh请求:
sudo ssh -i /root/.ssh/id_rsa.pub abc.com cdsw status
sudo rsync -avz -e "ssh -i /root/.ssh/id_rsa.pub abc.com" /var/lib/cdsw/ xyz.com:/var/lib/cdsw/
sudo ssh -i /root/.ssh/id_rsa.pub abc.com cdsw start2)创建远程服务器登录时调用的自定义脚本:
/root/定制-rsync.sh
#!/bin/bash
function cleanup {
echo "Starting cdsw"
cdsw start
}
trap cleanup EXIT
cdsw status
bash然后:
sudo rsync -avz -e "ssh -i /root/.ssh/id_rsa.pub abc.com /root/custom-rsync.sh" /var/lib/cdsw/ xyz.com:/var/lib/cdsw/旁白一下.我不太清楚为什么你的私钥以".pub“结尾。这通常被认为是你的公钥。删除.pub,将允许您只使用sudo ssh abc.com而不必指定标识文件,因为ssh将自动尝试使用id_rsa而无需询问。
https://serverfault.com/questions/906978
复制相似问题