2012-11-09 63 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 $