2012-11-09 100 views
1

我想發送一些簡單的.sh文件內的命令(函數),並在ssh到遠程計算機時保持登錄狀態。從sh文件發送命令並保持通過ssh登錄

我已經嘗試了很多方法,但目前還沒有工作。 這裏只有一個:

msh(){ 
    SERVER=$1 
    LOCAL=10.20.1.1 
    SSHF=`cat /tmp/sshf.sh` 
    ssh $SERVER -R 47471:$LOCAL:22 "$SSHF; bash --login" 
} 

我也嘗試過複製與管道和流和諸如此類的文件,還沒有工作。

回答

1

您需要在$SERVER預留終端,你這樣做與-t開關。如果我改變你的功能:

msh(){ 
    SERVER=$1 
    LOCAL=10.20.1.1 
    SSHF=`cat /tmp/sshf.sh` 
    ssh -t $SERVER -R 47471:$LOCAL:22 "$SSHF; bash --login" 
} 

它似乎做你想做的。

0

第一拷貝和scp文件過這樣的scp /tmp/sshf.sh $SERVER:~

這將會把你的腳本sshf.sh在你的home目錄上$SERVER那麼你可以ssh到機器並運行它ssh $SERVER cat ~/sshf.sh

作爲一個叫做copy_run_stay.sh腳本與sshf.sh包含echo hello將如下所示:

#!/bin/bash 

# get server name as argument to script 
SERVER=$1 
script='sshf.sh' 
# copy script to server 
scp $script $SERVER:~ 
# run script on server 
ssh $SERVER cat ~/sshf.sh 
# stay on server 
ssh $SERVER 

而且會產生:

# run the script on laptop 
laptop $ ./copy_run_stay.sh 
# sshf.sh gets copied to server and ran 
server $ hello 
# we are still on the server 
server $