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

时间:2011-11-27 07:05:31

标签: bash ubuntu ssh rsync file-transfer

我编写了一个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),而无需在服务器上打开新会话。

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

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

任何人都可以通过上述rsync或其他方式在没有打开新的单独连接的情况下,使用上述连接的ssh会话将文件从本地传输到服务器吗?

谢谢!

修改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'

1 个答案:

答案 0 :(得分:0)

您需要使用SSH多路复用。这是使用ControlMasterControlPath选项完成的。这是an article就可以了。