在远程运行bash时将文件传输到远程机器(ubuntu)



我写了一个bash脚本,我应该在远程服务器(ubuntu)上运行GUI(zenity)界面,我将在本地机器上发出以下命令。

sshpass -p $PASS ssh root@$SERVER 'bash' < /tmp/dep.sh | tee >(zenity --progress --title "Tomcat Deployer" --text "Connecting to Tomcat Server..." --width=400 --height=150) >>/tmp/temp.log;

我想把一个文件从我的本地机器传输到服务器,我想在上面的命令中在bash文件(/tmp/dep.sh)中输入一个enter,而不需要在服务器上打开一个新的会话。

我更喜欢下面的命令来传输文件到服务器,我应该把它放在bash脚本(/tmp/deep .sh)中,它应该在服务器上运行,从我的本地机器复制文件。我不想指定我的本地ip作为一个变量,并使用吹风命令作为源,因为脚本是在其他机器上使用的,因此ip的变化。我不应该将文件从本地传输到服务器,并编写单独的rsync &;创建一个新的SSH会话。

rsync --rsh="sshpass -p '$PASS' ssh" '$local:$APPATH/$app.war' /tmp

任何人都可以做任何魔术传输文件从本地到服务器与上述连接的ssh会话与上述rsync的帮助或通过其他方式,而不打开新的单独的连接?

谢谢!

编辑1 :

这可以通过单个ssh会话(单个命令)实现吗?:

rsync --rsh="sshpass -p serverpass ssh -o StrictHostKeyChecking=no" /home/user1/Desktop/app.war root@192.168.1.5:/tmp;
sshpass -p serverpass ssh -o StrictHostKeyChecking=no root@192.168.1.5 '/etc/init.d/tomcat start'

您将需要使用SSH多路复用。这是使用ControlMasterControlPath选项完成的。这里有一篇关于它的文章

最新更新