【问题标题】:Transfer a file to remote machine(ubuntu) while running bash remotely在远程运行 bash 时将文件传输到远程机器(ubuntu)
【发布时间】:2011-11-27 07:05:31
【问题描述】:

我已经编写了一个 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 & ssh 创建一个另外的 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'

【问题讨论】:

    标签: bash ubuntu ssh rsync file-transfer


    【解决方案1】:

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

    【讨论】:

    • 在你把它带到视图之前我从来没有听说过这个。这似乎很相关,试图了解我应该在我的情况下放什么......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 2012-06-20
    • 2016-08-17
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 2015-03-05
    相关资源
    最近更新 更多