【发布时间】: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