2011-11-27 84 views
0

我已經編寫了一個bash腳本,我應該使用GUI(zenity)界面在遠程服務器(ubuntu)上運行,我將在本地計算機上發出以下命令。遠程運行bash時將文件傳輸到遠程計算機(ubuntu)

sshpass -p $PASS ssh [email protected]$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 

任何人都可以做任何魔法將文件從本地與上述的rsync或通過其他手段,如果不打開新的單獨的連接幫助上述連接SSH會話傳輸到服務器?

謝謝!

編輯1

難道這是用單一的SSH會話(單指令)?:

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

回答

0

你需要使用SSH實現複用。這是通過使用ControlMasterControlPath選項完成的。這裏是an article就可以了。

+0

我從來沒有聽到這個,直到你把它帶到視圖。這似乎有很大的相關性,試圖理解我應該把什麼放在我的案子中.... – user465465

相關問題